做網(wǎng)站可以用什么軟件目前病毒的最新情況
目錄
- 一、異常概念
- 二、處理異常
- 2.1 拋出異常
- 2.2 使用 try-except 代碼塊
- 2.3 使用 try-except-else 代碼塊
- 2.4 靜默失敗
- 三、總結(jié)
遇到看不明白的地方,歡迎在評論中留言吶,一起討論,一起進(jìn)步!
本文參考:《Python編程:從入門到實(shí)踐(第2版)》
一、異常概念
每當(dāng)發(fā)生錯(cuò)誤時(shí),Python 都會(huì)創(chuàng)建一個(gè)異常對象。
如果我們編寫了處理該異常的代碼,程序?qū)⒗^續(xù)運(yùn)行;
如果未對異常進(jìn)行處理,程序?qū)⑼V共@示 traceback,其中包含有關(guān)異常的報(bào)告。
異常是使用 try-except
代碼塊處理的。try-except
代碼塊讓 Python 執(zhí)行指定的操作,同時(shí)告訴 Python 發(fā)生異常時(shí)怎么辦。使用 try-except
代碼塊時(shí),即便出現(xiàn)異常,程序也將繼續(xù)運(yùn)行:顯示你編寫的友好的錯(cuò)誤消息,而不是令用戶迷惑的 traceback。
二、處理異常
2.1 拋出異常
我們知道不能用數(shù)除以 0 0 0,但我們?nèi)匀贿@樣做會(huì)發(fā)生什么呢?
print(5/0)
運(yùn)行后這里我們看到一個(gè) traceback:
這里指出的錯(cuò)誤 ZeroDivisionError 是個(gè)異常對象。
在這種情況下,Python 將停止運(yùn)行程序,并指出引發(fā)了哪種異常,而我們可根據(jù)這些信息對程序進(jìn)行修改。這樣,如果再次發(fā)生此類錯(cuò)誤,我們就有備無患了。
2.2 使用 try-except 代碼塊
我們可以將錯(cuò)誤的代碼行放在 try 代碼片中。
如果這個(gè)代碼塊運(yùn)行起來沒有問題,Python 將跳過 except 代碼塊;
如果出現(xiàn)問題,Python 將查找與之匹配的 except 代碼塊并運(yùn)行其中的代碼。
try:print(5/0)
except ZeroDivisionError:print("You can't divide by zero!")
運(yùn)行結(jié)果為:
這個(gè)結(jié)果是我們所容易接受的😊
2.3 使用 try-except-else 代碼塊
如果 try 代碼塊拋出異常,即出現(xiàn)問題是,會(huì)到 except 代碼塊中尋找對應(yīng)的處理,而跳過 else 代碼塊;
try:answer = 5/0 # 會(huì)出現(xiàn)問題
except ZeroDivisionError:print("You can't divide by zero!")
else:print(answer)
執(zhí)行結(jié)果為:
如果 try 代碼塊執(zhí)行正確,沒有出現(xiàn)問題,則會(huì)執(zhí)行 else 代碼塊,而跳過 except 代碼塊。
try:answer = 5/2 # 這里我們修改正確
except ZeroDivisionError:print("You can't divide by zero!")
else:print(answer)
執(zhí)行結(jié)果為:
2.4 靜默失敗
Python 有一個(gè) pass 語句,可用于讓 Pytho n在代碼塊中什么都不要做:
try:answer = 5/0
except ZeroDivisionError:pass # 什么都不做
else:print(answer)
執(zhí)行后我們發(fā)現(xiàn)什么都沒有輸出。
三、總結(jié)
- 異常是程序運(yùn)行時(shí)可能遇到的非預(yù)期情況,如除以零或文件未找到等。
- 使用
try-except
代碼塊可以捕獲并處理這些異常,防止程序因錯(cuò)誤而中斷 - 而
try-except-else
代碼塊則進(jìn)一步允許在無異常發(fā)生時(shí)執(zhí)行特定代碼。 - 靜默失敗是指程序在遇到錯(cuò)誤時(shí)不顯示任何錯(cuò)誤信息,繼續(xù)執(zhí)行。
- 合理使用異常處理機(jī)制,可以提高程序的健壯性和用戶體驗(yàn)。