從0開始的Python學(xué)習(xí)016異常
簡介
當你的程序不能正常運行的時候,Python會在控制臺打印一段提醒,告訴你一個錯誤,這個錯誤就是異常。
錯誤
我在控制臺寫了一段無效的代碼,將print()的括號去掉,在執(zhí)行這條語句的時候,系統(tǒng)提示語法錯誤,無效的語句(我百度翻譯的)。這就是錯誤處理器所作的工作。
再換一種方式寫錯誤:
在程序獲取用戶輸入的時候,我們使用CTRL+d引發(fā)了一個EOFError錯誤,接下來我們嘗試去處理這樣的錯誤。
處理異常
使用try---except語句來處理異常。我們通常把容易產(chǎn)生異常的語句放置在try塊中,把做異常處理的語句放在except塊中。
import sys try: a = input('Enter something:') except(EOFError): print('\nWhy did you do an EOF on me ?') sys.exit() except: print('\nSome error/exception occurred.') print('Done')
運行結(jié)果
我們把所有可能引發(fā)錯誤的語句放在try
塊中,然后在except
從句/塊中處理所有的錯誤和異常。except
從句可以專門處理單一的錯誤或異常,或者一組包括在圓括號內(nèi)的錯誤/異常。如果沒有給出錯誤或異常的名稱,它會處理 所有的 錯誤和異常。對于每個try
從句,至少都有一個相關(guān)聯(lián)的except
從句。
你還可以讓try..catch
塊關(guān)聯(lián)上一個else
從句。當沒有異常發(fā)生的時候,else
從句將被執(zhí)行。
import sys try: a = input('Enter something:') except(EOFError): print('\nWhy did you do an EOF on me ?') sys.exit() except: print('\nSome error/exception occurred.') else: print('no error') print('Done')
運行結(jié)果
raise引發(fā)異常
你可以使用raise語句拋出異常。你需要指明錯誤/異常的名稱和伴隨異常觸發(fā)的異常對象。這個異常應(yīng)該是Error和Exception類的子類。這就用到了繼承的思想,使用__init__方法初始一些方法和參數(shù)。
class ShortInputException(Exception): def __init__(self,length,atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: s = input('Enter something-->') print(len(s)) if len(s) < 3: raise ShortInputException(len(s),atleast = 3) except(EOFError): print('\nWhy did you do an EOF on me ?') except(ShortInputException) as x: print('ShortInputException: The in input was of length %d,\ was expecting at least %d' % (x.length,x.atleast)) else: print('No exception was raised.')
運行結(jié)果
try...finally
假如在你讀文件的時候發(fā)生了異常,但是無論如何文件都要關(guān)閉。這個時候該怎么做呢?
這里我們需要使用finally塊來完成。
在使用try捕獲異常的時候,我們可以同時使用except塊和finally塊。
import time try: f = open('poem.txt') while True: # our usual file-reading idiom line = f.readline() if len(line) == 0: break time.sleep(2) print(line) finally: f.close() print('Cleaning up...closed the file')
運行結(jié)果
這里使用了time的sleep函數(shù),里面的參數(shù)是它的運行間隔。
這樣我們就有時間去使用CTRL+c使程序發(fā)生異常。這時候我們發(fā)現(xiàn)finally塊中的語句還是運行的,文件正常關(guān)閉了。
簡極(∞+∞=∞ ∞-∞=∞)
以上所述是小編給大家介紹的Python異常詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
es+flask搜索小項目實現(xiàn)分頁+高亮的示例代碼
本文主要介紹了es+flask搜索小項目實現(xiàn)分頁+高亮的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01python調(diào)用系統(tǒng)中應(yīng)用程序的函數(shù)示例
這篇文章主要為大家介紹了python調(diào)用系統(tǒng)中應(yīng)用程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06Python Scrapy實戰(zhàn)之古詩文網(wǎng)的爬取
本文將利用Python中Scrapy框架,實現(xiàn)爬取古詩文網(wǎng)上的詩詞數(shù)據(jù),具體包括詩詞的標題信息。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-05-05Python人工智能深度學(xué)習(xí)模型訓(xùn)練經(jīng)驗總結(jié)
這篇文章主要為大家介紹了Python人工智能深度學(xué)習(xí)模型訓(xùn)練的經(jīng)驗總結(jié)及建議,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-11-11