python異常的捕捉和補(bǔ)救實(shí)例詳解
1、捕捉特定異常
第一個(gè)符合條件的except語(yǔ)句會(huì)被執(zhí)行,用于報(bào)告錯(cuò)誤。如果僅僅是報(bào)告錯(cuò)誤,程序依然會(huì)停止。
a = 0
try:
b = 5/a
except ZeroDivisionError:
print('Error: a不能為0')
except ValueError:
print('Error: 傳入?yún)?shù)無(wú)效')
2、捕捉所有異常
except語(yǔ)句后面Exception表示捕獲任何異常類(lèi)型。
a = 0
try:
b = 5/a
except Exception:
print('a不能為0')
3、異常補(bǔ)救
except語(yǔ)句后面對(duì)可能的異常進(jìn)行補(bǔ)救,比如預(yù)設(shè)文件地址找不到時(shí),要求手動(dòng)指定文件地址。
a = 0
try:
b = 5/a
except:
b = 0
知識(shí)點(diǎn)擴(kuò)展:
內(nèi)置異常類(lèi)的層次結(jié)構(gòu)
BaseException # 所有異常的基類(lèi)
+-- SystemExit # 解釋器請(qǐng)求退出
+-- KeyboardInterrupt # 用戶(hù)中斷執(zhí)行(通常是輸入^C)
+-- GeneratorExit # 生成器(generator)發(fā)生異常來(lái)通知退出
+-- Exception # 常規(guī)異常的基類(lèi)
+-- StopIteration # 迭代器沒(méi)有更多的值
+-- StopAsyncIteration # 必須通過(guò)異步迭代器對(duì)象的__anext__()方法引發(fā)以停止迭代
+-- ArithmeticError # 各種算術(shù)錯(cuò)誤引發(fā)的內(nèi)置異常的基類(lèi)
| +-- FloatingPointError # 浮點(diǎn)計(jì)算錯(cuò)誤
| +-- OverflowError # 數(shù)值運(yùn)算結(jié)果太大無(wú)法表示
| +-- ZeroDivisionError # 除(或取模)零 (所有數(shù)據(jù)類(lèi)型)
+-- AssertionError # 當(dāng)assert語(yǔ)句失敗時(shí)引發(fā)
+-- AttributeError # 屬性引用或賦值失敗
+-- BufferError # 無(wú)法執(zhí)行與緩沖區(qū)相關(guān)的操作時(shí)引發(fā)
+-- EOFError # 當(dāng)input()函數(shù)在沒(méi)有讀取任何數(shù)據(jù)的情況下達(dá)到文件結(jié)束條件(EOF)時(shí)引發(fā)
+-- ImportError # 導(dǎo)入模塊/對(duì)象失敗
| +-- ModuleNotFoundError # 無(wú)法找到模塊或在在sys.modules中找到None
+-- LookupError # 映射或序列上使用的鍵或索引無(wú)效時(shí)引發(fā)的異常的基類(lèi)
| +-- IndexError # 序列中沒(méi)有此索引(index)
| +-- KeyError # 映射中沒(méi)有這個(gè)鍵
+-- MemoryError # 內(nèi)存溢出錯(cuò)誤(對(duì)于Python 解釋器不是致命的)
+-- NameError # 未聲明/初始化對(duì)象 (沒(méi)有屬性)
| +-- UnboundLocalError # 訪問(wèn)未初始化的本地變量
+-- OSError # 操作系統(tǒng)錯(cuò)誤,EnvironmentError,IOError,WindowsError,socket.error,select.error和mmap.error已合并到OSError中,構(gòu)造函數(shù)可能返回子類(lèi)
| +-- BlockingIOError # 操作將阻塞對(duì)象(e.g. socket)設(shè)置為非阻塞操作
| +-- ChildProcessError # 在子進(jìn)程上的操作失敗
| +-- ConnectionError # 與連接相關(guān)的異常的基類(lèi)
| | +-- BrokenPipeError # 另一端關(guān)閉時(shí)嘗試寫(xiě)入管道或試圖在已關(guān)閉寫(xiě)入的套接字上寫(xiě)入
| | +-- ConnectionAbortedError # 連接嘗試被對(duì)等方中止
| | +-- ConnectionRefusedError # 連接嘗試被對(duì)等方拒絕
| | +-- ConnectionResetError # 連接由對(duì)等方重置
| +-- FileExistsError # 創(chuàng)建已存在的文件或目錄
| +-- FileNotFoundError # 請(qǐng)求不存在的文件或目錄
| +-- InterruptedError # 系統(tǒng)調(diào)用被輸入信號(hào)中斷
| +-- IsADirectoryError # 在目錄上請(qǐng)求文件操作(例如 os.remove())
| +-- NotADirectoryError # 在不是目錄的事物上請(qǐng)求目錄操作(例如 os.listdir())
| +-- PermissionError # 嘗試在沒(méi)有足夠訪問(wèn)權(quán)限的情況下運(yùn)行操作
| +-- ProcessLookupError # 給定進(jìn)程不存在
| +-- TimeoutError # 系統(tǒng)函數(shù)在系統(tǒng)級(jí)別超時(shí)
+-- ReferenceError # weakref.proxy()函數(shù)創(chuàng)建的弱引用試圖訪問(wèn)已經(jīng)垃圾回收了的對(duì)象
+-- RuntimeError # 在檢測(cè)到不屬于任何其他類(lèi)別的錯(cuò)誤時(shí)觸發(fā)
| +-- NotImplementedError # 在用戶(hù)定義的基類(lèi)中,抽象方法要求派生類(lèi)重寫(xiě)該方法或者正在開(kāi)發(fā)的類(lèi)指示仍然需要添加實(shí)際實(shí)現(xiàn)
| +-- RecursionError # 解釋器檢測(cè)到超出最大遞歸深度
+-- SyntaxError # Python 語(yǔ)法錯(cuò)誤
| +-- IndentationError # 縮進(jìn)錯(cuò)誤
| +-- TabError # Tab和空格混用
+-- SystemError # 解釋器發(fā)現(xiàn)內(nèi)部錯(cuò)誤
+-- TypeError # 操作或函數(shù)應(yīng)用于不適當(dāng)類(lèi)型的對(duì)象
+-- ValueError # 操作或函數(shù)接收到具有正確類(lèi)型但值不合適的參數(shù)
| +-- UnicodeError # 發(fā)生與Unicode相關(guān)的編碼或解碼錯(cuò)誤
| +-- UnicodeDecodeError # Unicode解碼錯(cuò)誤
| +-- UnicodeEncodeError # Unicode編碼錯(cuò)誤
| +-- UnicodeTranslateError # Unicode轉(zhuǎn)碼錯(cuò)誤
+-- Warning # 警告的基類(lèi)
+-- DeprecationWarning # 有關(guān)已棄用功能的警告的基類(lèi)
+-- PendingDeprecationWarning # 有關(guān)不推薦使用功能的警告的基類(lèi)
+-- RuntimeWarning # 有關(guān)可疑的運(yùn)行時(shí)行為的警告的基類(lèi)
+-- SyntaxWarning # 關(guān)于可疑語(yǔ)法警告的基類(lèi)
+-- UserWarning # 用戶(hù)代碼生成警告的基類(lèi)
+-- FutureWarning # 有關(guān)已棄用功能的警告的基類(lèi)
+-- ImportWarning # 關(guān)于模塊導(dǎo)入時(shí)可能出錯(cuò)的警告的基類(lèi)
+-- UnicodeWarning # 與Unicode相關(guān)的警告的基類(lèi)
+-- BytesWarning # 與bytes和bytearray相關(guān)的警告的基類(lèi)
+-- ResourceWarning # 與資源使用相關(guān)的警告的基類(lèi)。被默認(rèn)警告過(guò)濾器忽略。
到此這篇關(guān)于python異常的捕捉和補(bǔ)救實(shí)例詳解的文章就介紹到這了,更多相關(guān)python異常的捕捉和補(bǔ)救內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)sm2和sm4國(guó)密(國(guó)家商用密碼)算法的示例
這篇文章主要介紹了python實(shí)現(xiàn)sm2和sm4國(guó)密(國(guó)家商用密碼)算法的示例,幫助大家使用python加密文件,感興趣的朋友可以了解下2020-09-09
使用Protocol Buffers的C語(yǔ)言拓展提速Python程序的示例
這篇文章主要介紹了使用Protocol Buffers的C語(yǔ)言拓展提速Python程序的示例,使用C拓展Python是Python編程進(jìn)階中的重要技巧,需要的朋友可以參考下2015-04-04
python實(shí)現(xiàn)FTP服務(wù)器服務(wù)的方法
本篇文章主要介紹了python實(shí)現(xiàn)FTP服務(wù)器的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
Python英文單詞大小寫(xiě)轉(zhuǎn)換常用方法示例
這篇文章主要為大家介紹了Python英文單詞大小寫(xiě)轉(zhuǎn)換常用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python3.6實(shí)現(xiàn)根據(jù)電影名稱(chēng)(支持電視劇名稱(chēng)),獲取下載鏈接的方法
這篇文章主要介紹了Python3.6實(shí)現(xiàn)根據(jù)電影名稱(chēng)(支持電視劇名稱(chēng)),獲取下載鏈接的方法,涉及Python爬蟲(chóng)與正則相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
使用 Python 和 OpenCV 實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別功能
本文詳細(xì)講解了使用Python和OpenCV庫(kù)實(shí)行實(shí)時(shí)人臉識(shí)別的過(guò)程,首先,確保安裝OpenCV庫(kù),并通過(guò)Haar級(jí)聯(lián)分類(lèi)器進(jìn)行人臉檢測(cè),實(shí)現(xiàn)步驟包括打開(kāi)攝像頭、圖像灰度轉(zhuǎn)換、人臉檢測(cè)及繪制矩形框,代碼示例清晰展示了從設(shè)置攝像頭到最終展示檢測(cè)結(jié)果的完整過(guò)程2024-11-11
python print輸出延時(shí),讓其立刻輸出的方法
今天小編就為大家分享一篇python print輸出延時(shí),讓其立刻輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python使用defaultdict解決字典默認(rèn)值
本文主要介紹了Python使用defaultdict解決字典默認(rèn)值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

