錯誤與異常

2021-09-24 09:54:08 字數 1819 閱讀 2826

錯誤

語法錯誤也稱編譯錯誤,拼寫錯誤等導致編譯器無法將源**轉換為位元組碼

邏輯錯誤是程式可以執行(本身不報錯)但執行結果不正確,需要根據結果來除錯判斷

異常沒有語法錯誤的前提下,在執行期間產生特定的錯誤

每個特定錯誤都對應到乙個異常類物件,當發生某個特定錯誤時,其對應的異常類物件的例項物件會被輸出

如果在程式對丟擲的異常不進行捕獲和處理,程式就會終止,並列印錯誤資訊,包括

traceback:異常呼叫堆疊的跟蹤資訊,流出了程式中的相關行數

對應的異常類物件的名稱以及異常的錯誤資訊

內建的異常類物件和自定義的異常類物件對應的錯誤會被看作異常

經常遇到的是exception

?exception

異常處理

try…except…else…finally

try:可能異常的**

except:異常後怎麼處理

try:

r = 1/0

print(r)

except arithmeticerror:

print('數字異常')#父類 可捕獲子類異常

try:

r = 1/0

print(r)

except arithmeticerror:

print('數字異常')

except zerodivisionerror:

print('0錯誤')

try:

r = 1/0

print(r)

except zerodivisionerror:

print('0錯誤')

except arithmeticerror:

print('數字異常')

當多個異常類物件對應的異常處理**完全相同時,把異常類物件以元組形式放在乙個exceot中

try:

r = 1/0

print(r)

except (typeerror,zerodivisionerror,valueerror):

print('執行錯誤')

如果想在匹配的except子句中訪問異常例項物件,可加as + 變數

try:

r = 1/0

print(r)

except zerodivisionerror as e:

print('type(e)')

print(e)

try沒有產生異常的時候就會執行else

finally總會執行的話

raise 手動丟擲異常例項物件

raise zerodivisionerror('0不能作為除數')

raise warning('大膽')

如果在except中不想對異常例項物件進行處理,可以使用raise手動丟擲另乙個異常

try:

raise zerodivisionerror('0不能作為除數')

except:

raise warning('大膽')

class myexception(exception):

pass

raise (myexception)

錯誤與異常

追蹤資訊 異常型別 異常值 traceback valueerror 異常值 常用異常 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 importerror 無法引入模組或包 基本上是路徑問題或名...

錯誤 與 異常

1.perror 函式 void perror const char message 當某個庫函式出錯時,該庫函式首先會將代表出錯的具體原因出錯 儲存到全域性變數 errno 而 perror 只是將errno 代表的錯誤報告給使用者 實際上是呼叫strerrno errno 函式 注意,當庫函式執...

Lua 錯誤與異常

lua的基本函式庫 內建函式庫,不用載入即使用 包含一些針對錯誤和異常的處理功能。一 顯式拋錯誤或異常功能函式 1 error message level 功能 終止正在執行的函式,並返回message的內容作為錯誤資訊 error函式永遠都不會返回 通常情況下,error會附加一些錯誤位置的資訊到...