錯誤
語法錯誤也稱編譯錯誤,拼寫錯誤等導致編譯器無法將源**轉換為位元組碼
邏輯錯誤是程式可以執行(本身不報錯)但執行結果不正確,需要根據結果來除錯判斷
異常沒有語法錯誤的前提下,在執行期間產生特定的錯誤
每個特定錯誤都對應到乙個異常類物件,當發生某個特定錯誤時,其對應的異常類物件的例項物件會被輸出
如果在程式對丟擲的異常不進行捕獲和處理,程式就會終止,並列印錯誤資訊,包括
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會附加一些錯誤位置的資訊到...