1、捕捉特定異常
第一個符合條件的except語句會被執行,用于報告錯誤。如果僅僅是報告錯誤,程序依然會停止。
a = 0
try:
b = 5/a
except ZeroDivisionError:
print('Error: a不能為0')
except ValueError:
print('Error: 傳入參數無效')
2、捕捉所有異常
except語句后面Exception表示捕獲任何異常類型。
a = 0
try:
b = 5/a
except Exception:
print('a不能為0')
3、異常補救
except語句后面對可能的異常進行補救,比如預設文件地址找不到時,要求手動指定文件地址。
a = 0
try:
b = 5/a
except:
b = 0
知識點擴展:
內置異常類的層次結構
BaseException # 所有異常的基類
+-- SystemExit # 解釋器請求退出
+-- KeyboardInterrupt # 用戶中斷執行(通常是輸入^C)
+-- GeneratorExit # 生成器(generator)發生異常來通知退出
+-- Exception # 常規異常的基類
+-- StopIteration # 迭代器沒有更多的值
+-- StopAsyncIteration # 必須通過異步迭代器對象的__anext__()方法引發以停止迭代
+-- ArithmeticError # 各種算術錯誤引發的內置異常的基類
| +-- FloatingPointError # 浮點計算錯誤
| +-- OverflowError # 數值運算結果太大無法表示
| +-- ZeroDivisionError # 除(或取模)零 (所有數據類型)
+-- AssertionError # 當assert語句失敗時引發
+-- AttributeError # 屬性引用或賦值失敗
+-- BufferError # 無法執行與緩沖區相關的操作時引發
+-- EOFError # 當input()函數在沒有讀取任何數據的情況下達到文件結束條件(EOF)時引發
+-- ImportError # 導入模塊/對象失敗
| +-- ModuleNotFoundError # 無法找到模塊或在在sys.modules中找到None
+-- LookupError # 映射或序列上使用的鍵或索引無效時引發的異常的基類
| +-- IndexError # 序列中沒有此索引(index)
| +-- KeyError # 映射中沒有這個鍵
+-- MemoryError # 內存溢出錯誤(對于Python 解釋器不是致命的)
+-- NameError # 未聲明/初始化對象 (沒有屬性)
| +-- UnboundLocalError # 訪問未初始化的本地變量
+-- OSError # 操作系統錯誤,EnvironmentError,IOError,WindowsError,socket.error,select.error和mmap.error已合并到OSError中,構造函數可能返回子類
| +-- BlockingIOError # 操作將阻塞對象(e.g. socket)設置為非阻塞操作
| +-- ChildProcessError # 在子進程上的操作失敗
| +-- ConnectionError # 與連接相關的異常的基類
| | +-- BrokenPipeError # 另一端關閉時嘗試寫入管道或試圖在已關閉寫入的套接字上寫入
| | +-- ConnectionAbortedError # 連接嘗試被對等方中止
| | +-- ConnectionRefusedError # 連接嘗試被對等方拒絕
| | +-- ConnectionResetError # 連接由對等方重置
| +-- FileExistsError # 創建已存在的文件或目錄
| +-- FileNotFoundError # 請求不存在的文件或目錄
| +-- InterruptedError # 系統調用被輸入信號中斷
| +-- IsADirectoryError # 在目錄上請求文件操作(例如 os.remove())
| +-- NotADirectoryError # 在不是目錄的事物上請求目錄操作(例如 os.listdir())
| +-- PermissionError # 嘗試在沒有足夠訪問權限的情況下運行操作
| +-- ProcessLookupError # 給定進程不存在
| +-- TimeoutError # 系統函數在系統級別超時
+-- ReferenceError # weakref.proxy()函數創建的弱引用試圖訪問已經垃圾回收了的對象
+-- RuntimeError # 在檢測到不屬于任何其他類別的錯誤時觸發
| +-- NotImplementedError # 在用戶定義的基類中,抽象方法要求派生類重寫該方法或者正在開發的類指示仍然需要添加實際實現
| +-- RecursionError # 解釋器檢測到超出最大遞歸深度
+-- SyntaxError # Python 語法錯誤
| +-- IndentationError # 縮進錯誤
| +-- TabError # Tab和空格混用
+-- SystemError # 解釋器發現內部錯誤
+-- TypeError # 操作或函數應用于不適當類型的對象
+-- ValueError # 操作或函數接收到具有正確類型但值不合適的參數
| +-- UnicodeError # 發生與Unicode相關的編碼或解碼錯誤
| +-- UnicodeDecodeError # Unicode解碼錯誤
| +-- UnicodeEncodeError # Unicode編碼錯誤
| +-- UnicodeTranslateError # Unicode轉碼錯誤
+-- Warning # 警告的基類
+-- DeprecationWarning # 有關已棄用功能的警告的基類
+-- PendingDeprecationWarning # 有關不推薦使用功能的警告的基類
+-- RuntimeWarning # 有關可疑的運行時行為的警告的基類
+-- SyntaxWarning # 關于可疑語法警告的基類
+-- UserWarning # 用戶代碼生成警告的基類
+-- FutureWarning # 有關已棄用功能的警告的基類
+-- ImportWarning # 關于模塊導入時可能出錯的警告的基類
+-- UnicodeWarning # 與Unicode相關的警告的基類
+-- BytesWarning # 與bytes和bytearray相關的警告的基類
+-- ResourceWarning # 與資源使用相關的警告的基類。被默認警告過濾器忽略。
到此這篇關于python異常的捕捉和補救實例詳解的文章就介紹到這了,更多相關python異常的捕捉和補救內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python用戶自定義異常的實例講解
- 一文搞懂python異常處理、模塊與包
- Python拋出引發異常(raise)知識點總結
- Python異常處理與反射相關問題總結
- 一篇文章帶你了解python異常基礎