python 7 異常處理
2023-03-04 10:35 作者:戎碼關(guān)山 | 我要投稿

python中的內(nèi)置異常
BaseException ? ? ? 所有異常的基類 ? ?
+-- SystemExit ? ? ? 解釋器請求退出
+-- KeyboardInterrupt ? ? 用戶中斷執(zhí)行(通常是輸入^C)
+-- GeneratorExit ? ? ?生成器(generator)發(fā)生異常來通知退出
+-- Exception ? ? ? ?常規(guī)錯(cuò)誤的基類
? +-- StopIteration ? ? ? 迭代器沒有更多值
? +-- StopAsyncIteration ? ? ? 必須通過異步迭代器對象的__anext__()方法引發(fā)以停止迭代
? +-- ArithmeticError ? ? ? ? 所有數(shù)值計(jì)算錯(cuò)誤的基類
? | ?+-- FloatingPointError ? ? ? 浮點(diǎn)計(jì)算錯(cuò)誤
? | ?+-- OverflowError ? ? ? ? 數(shù)值運(yùn)算超出最大限制
? | ?+-- ZeroDivisionError ? ? ? 除(或取模)零 (所有數(shù)據(jù)類型
? +-- AssertionError ? ? ? ? 斷言語句失敗
? +-- AttributeError ? ? ? ? 對象沒有這個(gè)屬性
? +-- BufferError ? ? ? ? ?與緩沖區(qū)相關(guān)的操作時(shí)引發(fā)
? +-- EOFError ? ? ? ? ? ?沒有內(nèi)建輸入,到達(dá)EOF 標(biāo)記
? +-- ImportError ? ? ? ? ? 導(dǎo)入失敗
? | ?+-- ModuleNotFoundError ? ?找不到模塊
? +-- LookupError ? ? ? ? ? 無效數(shù)據(jù)查詢的基類
? | ?+-- IndexError ? ? ? ? ? 序列中沒有此索引(index)
? | ?+-- KeyError ? ? ? ? ? ?映射中沒有這個(gè)鍵
? +-- MemoryError ? ? ? ? ? 內(nèi)存溢出錯(cuò)誤
? +-- NameError ? ? ? ? ? ?未聲明、初始化對象
? | ?+-- UnboundLocalError ? ? ? 訪問未初始化的本地變量
? +-- OSError ? ? ? ? ? ? 操作系統(tǒng)錯(cuò)誤,
? | ?+-- BlockingIOError ? ? ? ?操作將阻塞對象設(shè)置為非阻塞操作
? | ?+-- ChildProcessError ? ? ? 子進(jìn)程上的操作失敗
? | ?+-- ConnectionError ? ? ? ?與連接相關(guān)的異常的基類
? | ?| ?+-- BrokenPipeError ? ? ? 在已關(guān)閉寫入的套接字上寫入
? | ?| ?+-- ConnectionAbortedError ? 連接嘗試被對等方中止
? | ?| ?+-- ConnectionRefusedError ? 連接嘗試被對等方拒絕
? | ?| ?+-- ConnectionResetError ? ?連接由對等方重置
? | ?+-- FileExistsError ? ? ? ?創(chuàng)建已存在的文件或目錄
? | ?+-- FileNotFoundError ? ? ? 請求不存在的文件或目錄
? | ?+-- InterruptedError ? ? ? 系統(tǒng)調(diào)用被輸入信號中斷
? | ?+-- IsADirectoryError ? ? ? 在目錄上請求文件操作
? | ?+-- NotADirectoryError ? ? ?在不是目錄的事物上請求目錄操作
? | ?+-- PermissionError ? ? ? 在沒有訪問權(quán)限的情況下運(yùn)行操作
? | ?+-- ProcessLookupError ? ? ?進(jìn)程不存在
? | ?+-- TimeoutError ? ? ? ? 系統(tǒng)函數(shù)在系統(tǒng)級別超時(shí)
? +-- ReferenceError ? ? ? ?弱引用試圖訪問已經(jīng)垃圾回收了的對象
? +-- RuntimeError ? ? ? ? 一般的運(yùn)行時(shí)錯(cuò)誤
? | ?+-- NotImplementedError ? 尚未實(shí)現(xiàn)的方法
? | ?+-- RecursionError ? ? ?解釋器檢測到超出最大遞歸深度
? +-- SyntaxError ? ? ? ? ?Python 語法錯(cuò)誤
? | ?+-- IndentationError ? ? 縮進(jìn)錯(cuò)誤
? | ? ? +-- TabError ? ? Tab 和空格混用
? +-- SystemError ? ? ? 一般的解釋器系統(tǒng)錯(cuò)誤
? +-- TypeError ? ? ? ?對類型無效的操作
? +-- ValueError ? ? ? 傳入無效的參數(shù)
? | ?+-- UnicodeError ? ? ? Unicode 相關(guān)的錯(cuò)誤
? | ? ? +-- UnicodeDecodeError ? Unicode 解碼時(shí)的錯(cuò)誤
? | ? ? +-- UnicodeEncodeError ? Unicode 編碼時(shí)錯(cuò)誤
? | ? ? +-- UnicodeTranslateError Unicode 轉(zhuǎn)換時(shí)錯(cuò)誤
? +-- Warning ? ? ? ? ? ?警告的基類
? ? ?+-- DeprecationWarning ? ? 關(guān)于被棄用的特征的警告
? ? ?+-- PendingDeprecationWarning ?關(guān)于構(gòu)造將來語義會有改變的警告
? ? ?+-- RuntimeWarning ? ? ?可疑的運(yùn)行行為的警告
? ? ?+-- SyntaxWarning ? ? ?可疑的語法的警告
? ? ?+-- UserWarning ? ? ? 用戶代碼生成的警告
? ? ?+-- FutureWarning ? ? ?有關(guān)已棄用功能的警告的基類
? ? ?+-- ImportWarning ? ? ?模塊導(dǎo)入時(shí)可能出錯(cuò)的警告的基類
? ? ?+-- UnicodeWarning ? ? ?與Unicode相關(guān)的警告的基類
? ? ?+-- BytesWarning ? ? ? bytes和bytearray相關(guān)的警告的基類
? ? ?+-- ResourceWarning ? ? ?與資源使用相關(guān)的警告的基類
#try-except語句
try:
? ?a = 100
? ?print(A)
except NameError:
? ?print("變量名不存在")
#try-except-else語句
try:
? ?x = input('被除數(shù): ')
? ?y = input('除數(shù): ')
? ?z = int(x) / int(y)
except ValueError:
? ?print('請輸入數(shù)字!')
except ZeroDivisionError:
? ?print('0不能做除數(shù)!')
else:
? ?print(x,' / ',y,' = ',z)
#finally子句,不管有沒有異常都會執(zhí)行,一般對一個(gè)文件操作,無論是不是有異常,都需要關(guān)閉文件
try:
? ?f = open('test.txt','r')
? ?print(f.read())
except IOError:
? ?print("文件不存在")
finally:
? ?try:
? ? ? ?f.close()
? ?except NameError:
? ? ? ?pass
#raise語句
s = '123456'
try:
? ?if len(s) > 5:
? ? ? ?raise Exception('超過5個(gè)字符!')
except Exception as er:
? ?print(er)
#自定義異常類,通過繼承Exception類來創(chuàng)建自己的異常類
標(biāo)簽: