python錯誤類型解析

python中的Error和Debugging

這是一個微軟python課的筆記記錄
這兩個東西是完全不一樣的事情,我們總把它當做是同義詞,但實際上並不是。

Defining terms(定義術語)

Error handing(錯誤處理)

指的是當代碼運行時有問題,當我把代碼放到生產環境後,是無法雲測的,最常見的例子比如權限問題、數據庫改變和服務關閉等。這些都是無法控制的事情

Debugg(調試)

指的是我知道代碼中有問題,存在出錯的地方,可能會宕掉,而且我知道哪裏出問題導致了代碼出錯

Debuging again(重申調試)

是指知道代碼中存在問題,然後試圖去修復,當程序外部發生一些無無法預測的事情時要使用 try,except,finally方法去解決,

Error types(錯誤類型)

下面是可能的錯誤類型
如果你的代碼出現錯誤,選擇錯誤類型就是很有必要的了

Syntax errors(語法錯誤)

代碼示例:

x=42
y=206
if x==y
    print('successful')

運行結果如下:

 File "f:/workplace-vsc/one/new.py", line 3
 if x==y
        ^
SyntaxError: invalid syntax

很顯然運行出現了錯誤,但是同時運行的錯誤提示也給出了,是在第3行出現的錯誤。提示說的是無效的語法( invalid syntax ),爲什麼出現這個錯誤呢,其實就是缺少關鍵的字符。

Runtimely errors(運行錯誤)

x=42
y=0
print(x/y)
File "f:/workplace-vsc/one/new.py", line 3, in <module>
    print(x/y)
ZeroDivisionError: division by zero

代碼在運行中種出現問題,跑不了了。
這個案例的錯誤原因是我嘗試除以0,當代碼運行到地3行時,就會彈出上述錯誤提示信息,除以0( division by zero
在運行的時候出錯,可以讓我們知道錯在哪,從而去調試。
1111111111111111111111111111111111111111111111111111111111
這裏的基本解決錯誤的步驟是:
先看行號(例如:line 3)
然後找到出錯的地方(例如:prrint(x/y))

:當你處理運行時錯誤,錯誤就在你代碼中【而不是你使用的框架或者運行內部出現了錯誤,不要找錯重點。。不是說沒有 只是很罕見】

補:Catching runtime errors

代碼:

x=42
y=0
print()
try:
    print(x/y)
except ZeroDivisionError as e:
    print('sorry,something went wrong')
else:
    print('sorry really went wrong')
finally:
    print('this always runs on success or failure')
print()

運行:

sorry really went wrong
this always runs on success or failure

其實 try ,except,finall不是用來找bug的,bug定義的。bug是我代碼中出錯的地方,知錯不改代碼就無法運行,像用戶輸入這種無法掌控 try except,finally就是很有用的 但是你要是知道錯誤在哪,就不用了

logic errors(邏輯錯誤)

代碼:

x=206
y=42
if x<y:
    print(str(x)+'is greater than '+str(y))

運行如下:

PS F:\workplace-vsc\one> & D:/Anaconda3/envs/paddle_env/python.exe f:/workplace-vsc/one/new.py
PS F:\workplace-vsc\one> 

運行結果爲空

如果在後面加一句

else:
    print(str(y)+' is greater than '+str(x))

加一句之後的娙結果:

PS F:\workplace-vsc\one> & D:/Anaconda3/envs/paddle_env/python.exe f:/workplace-vsc/one/new.py
42 is greater than 206

可以知道,是布爾值邏輯出現了錯誤

就先說到這裏吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章