20201210_121_常見異常彙總和說明
阿新 • • 發佈:2020-12-19
技術標籤:學習筆記_Python程式設計基礎_Pycharm版
文章目錄
return 語句和異常處理問題
由於 return 有兩種作用:結束方法執行、返回值。我們一般不把 return 放到異常處理結構中,而是放到方法最後。
【例1.1】異常結構中return的使用方式
def test01():
print('step1')
try:
x = 3 / 0
# return 'a'
except:
print('step2')
print ('異常:0不能作為除數')
# return 'b'
finally:
print('step3')
# return 'c'
print('step4')
return 'd' # 老師:一般不要把return語句放到try、except、else、finally塊中,會發生一些意想不到的錯誤。建議放到最後。
print(test01())
執行結果:
【例1.2】異常結構中return的使用方式
return不在最後,所以執行到return本來程式執行要終止,但是還是會把finally塊的程式碼執行完,之後就不執行了。
def test01():
print('step1')
try:
x = 3 / 0
# return 'a'
except:
print('step2')
print('異常:0不能作為除數')
return 'b'
finally:
print('step3')
# return 'c'
print('step4')
# return 'd' # 一般不要把return語句放到try、except、else、finally塊中,會發生一些意想不到的錯誤。建議放到最後。
print(test01())
執行結果:
常見異常的解決
Python 中的異常都派生自 BaseException 類,本課時我們列舉一些常見的異常,方便初學者掌握。
1.SyntaxError:語法錯誤
2.NameError:嘗試訪問一個沒有申明的變數
3.ZeroDivisionError:除數為 0 錯誤(零除錯誤)
4.ValueError:數值錯誤
4.1
4.2
5.TypeError:型別錯誤
6.AttributeError:訪問了物件不存在的屬性
a = 1
a.kk()
執行報錯內容:
7.IndexError:訪問的索引超出了範圍
a = [1, 2, 3]
a[5]
執行報錯內容:
8.KeyError:字典的關鍵字不存在
a = {'name': '李明', 'age': 18, 'salary': 8000}
a['sex']
執行報錯內容:
常見異常彙總
按字母順序排列
異常名稱 | 說明 |
---|---|
ArithmeticError | 所有數值計算錯誤的基類 |
AssertionError | 斷言語句失敗 |
AttributeError | 物件沒有這個屬性 |
BaseException | 所有異常的基類 |
DeprecationWarning | 關於被棄用的特徵的警告 |
EnvironmentError | 作業系統錯誤的基類 |
EOFError | 沒有內建輸入,達到EOF標記 |
Exception | 常規錯誤的基類 |
FloatPointError | 浮點計算錯誤 |
FutureWarning | 關於構造語義將來會有改變的警告 |
GeneratorExit | 生成器(generator)發生異常,通知退出 |
ImportError | 匯入模組/物件失敗 |
IndentationError | 縮排錯誤 |
IndexError | 序列中沒有此索引 |
IOError | 輸入/輸出操作失敗 |
KeyboardInterrupt | 使用者中斷執行(通常是輸入^C) |
KeyError | 對映中沒有這個鍵 |
LookupError | 無效查詢的基類 |
MemoryError | 記憶體溢位錯誤(對Python直譯器來說不是致命的) |
NameError | 未宣告/初始化物件(沒有屬性) |
NotImplementedError | 尚未實現的方法 |
OSError | 作業系統錯誤 |
OverflowError | 數值運算超出最大限制 |
OverflowWarning | 舊的關於自動提升為長整型(long)的警告 |
PendingDeprecationWarning | 關於特性將會被廢棄的警告 |
ReferenceError | 弱引用(Weak Reference)試圖訪問已經垃圾回收了的物件 |
RuntimeError | 一般的執行時錯誤 |
RuntimeWarning | 可以的執行時行為(Runtime Behavior)的警告 |
StandardError | 所有內建標準異常的基類 |
StopIteration | 迭代器沒有更多的值 |
SyntaxError | Python語法錯誤 |
SyntaxWarning | 可以的語法的警告 |
SystemError | 一般的直譯器系統錯誤 |
SystemExit | 直譯器請求退出 |
TabError | Tab和空格鍵混用 |
TypeError | 對型別無效的操作 |
UnboundLocalError | 訪問未初始化的本地變數 |
UnicodeDecodeError | Unicode編碼時的錯誤 |
UnicodeError | Unicode相關的錯誤 |
UnicodeTranslateError | Unicode轉換時的錯誤 |
UserWarning | 使用者程式碼生成的警告 |
ValueError | 傳入無效的引數 |
Warning | 警告的基類 |
WindowsError | 系統呼叫失敗 |
ZeroDivisionError | 除(或取模)零(所有資料型別) |