異常處理

1.什么是異常

異常:,運(yùn)行過(guò)程中,報(bào)錯(cuò),不正常的情況

不正常的情況,在程序中,會(huì)有兩種體現(xiàn)

第一個(gè):自己造孽,寫錯(cuò)代碼了!那還能怨誰(shuí),錯(cuò)誤也是一種異常;這樣的話程序都運(yùn)行不起來(lái)!

第二個(gè):程序運(yùn)行過(guò)程中,在某些特定條件下,不合適的數(shù)據(jù)引起程序出現(xiàn)錯(cuò)誤導(dǎo)致程序崩潰

??? 例如要求用戶輸入一個(gè)數(shù)字,但是用戶誤操作輸入了字符串,在進(jìn)行類型轉(zhuǎn)換時(shí)就會(huì)出現(xiàn)錯(cuò)誤導(dǎo)致程序崩潰!

為什么要處理異常:

??? 當(dāng)程序在運(yùn)行過(guò)程中,由于用戶的誤操作或者不合適的數(shù)據(jù)引發(fā)的程序錯(cuò)誤,讓代碼自己處理并保證程序的正常執(zhí)行。而不至于因?yàn)殄e(cuò)誤導(dǎo)致程序崩潰!

??? 提高代碼的健壯性!


怎么處理異常:

1.捕獲處理異常

2.斷言處理異?!緶y(cè)試異常信息】[擴(kuò)展]


捕獲處理異常語(yǔ)法:

try:#嘗試,通常情況,將可能出現(xiàn)異常的代碼,包含在try中

????????????????? ? ? ? ? ?? <可能會(huì)出現(xiàn)異常的代碼>

except[異常信息]:#一旦出現(xiàn)異常,代碼就會(huì)直接從出現(xiàn)異常的地方跳轉(zhuǎn)到except中執(zhí)行

????????????????? ? ? ? ? <出現(xiàn)異常之后要執(zhí)行的代碼>

else:#如果try中的代碼執(zhí)行沒有異常,執(zhí)行完畢后,就會(huì)執(zhí)行else中的代碼

?????????????????? <正常執(zhí)行try之后,else中的代碼執(zhí)行>

finally:?#不論是否出現(xiàn)異常,都要在try執(zhí)行完成之后執(zhí)行的代碼

?????????????????????????????????? <最終的掃尾工作>


1.常見的異常

所有異常的超類:BaseException

標(biāo)準(zhǔn)異常的超類:Exception(BaseException)

程序執(zhí)行過(guò)程中經(jīng)??吹降漠惓#?/b>

BaseException? 所有異常的基類

SystemExit? 解釋器請(qǐng)求退出

KeyboardInterrupt? 用戶中斷執(zhí)行(通常是輸入^C)

Exception? 常規(guī)錯(cuò)誤的基類

StopIteration? 迭代器沒有更多的值

GeneratorExit? 生成器(generator)發(fā)生異常來(lái)通知退出

StandardError? 所有的內(nèi)建標(biāo)準(zhǔn)異常的基類

ArithmeticError? 所有數(shù)值計(jì)算錯(cuò)誤的基類

FloatingPointError? 浮點(diǎn)計(jì)算錯(cuò)誤

OverflowError? 數(shù)值運(yùn)算超出最大限制

ZeroDivisionError? 除(或取模)零 (所有數(shù)據(jù)類型)

AssertionError? 斷言語(yǔ)句失敗

AttributeError? 對(duì)象沒有這個(gè)屬性

EOFError? 沒有內(nèi)建輸入,到達(dá)EOF 標(biāo)記

EnvironmentError? 操作系統(tǒng)錯(cuò)誤的基類

IOError? 輸入/輸出操作失敗

OSError? 操作系統(tǒng)錯(cuò)誤



案例:


2.處理多個(gè)異常

try-except?(E1,?E2,?E3,?…,En)表示一個(gè)except處理指定的多個(gè)異常

try? -? exceptE1? -? except?E2? -? except?E3…每個(gè)except處理指定的異常

通常情況下,我們要查看異常信息,就需要打印異常信息—打印e變量的值

案例:

1.try-except (E1, E2, E3, …,En)類型:

try-except (E1, E2, E3, …,En)類型

2.try? -? exceptE1? -? except E2? -? except E3…類型:

try? -? exceptE1? -? except E2? -? except E3…類型


3.自定義異常

異?!环N對(duì)象

自定義異常–一種自定義類型

自定義類型[異常]–參考標(biāo)準(zhǔn)異常(繼承Exception)—自定義異常(繼承Exception)

自定義異常的目的:轉(zhuǎn)換異常信息,將不明確的異常信息轉(zhuǎn)換成更加精確的異常信息

轉(zhuǎn)換異常信息:異常的傳遞~傳遞更加明確的異常,給后面的代碼進(jìn)行處理!

案例:

4.主動(dòng)拋出異常

在開發(fā)的過(guò)程中,主動(dòng)出現(xiàn)一種錯(cuò)誤,將錯(cuò)誤拋出給程序告訴程序出錯(cuò)了。

通過(guò)raise關(guān)鍵字,拋出一個(gè)異常

案例:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python異常處理 異常概念: 異常:就是不正常的情況,程序開發(fā)過(guò)程中錯(cuò)誤和BUG都是補(bǔ)充正常的情況 異常發(fā)生的...
    youngkun閱讀 983評(píng)論 0 4
  • 本節(jié)內(nèi)容如下: 什么是異常,對(duì)異常的解釋和描述,口語(yǔ)描述和專業(yè)術(shù)語(yǔ)的聯(lián)系 代碼中出現(xiàn)錯(cuò)誤的處理手段 異常處理方式什...
    大牧莫邪閱讀 850評(píng)論 0 0
  • 異常的意義 我們程序在開發(fā)過(guò)程中,總會(huì)遇到各種各樣的一些問(wèn)題,有些是由于拼寫、配置、選項(xiàng)等等各種引起的程序錯(cuò)誤,有...
    杰羅尼莫030閱讀 345評(píng)論 0 0
  • 什么是異常 異常:不正常的情況 不正常的情況,在程序中,會(huì)有兩種體現(xiàn) 自己造孽:寫錯(cuò)代碼了!錯(cuò)誤也是一種異常;程序...
    一念之間789閱讀 418評(píng)論 0 0
  • 打小的時(shí)候,我就有一種奇特的能力,閉上眼可以看到風(fēng)景。就像風(fēng)光片一樣,里面山水、樹木、行人、動(dòng)物,一應(yīng)俱全。有時(shí)候...
    百步堂主閱讀 579評(píng)論 2 0

友情鏈接更多精彩內(nèi)容