您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中異常的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
簡介
當你的程序不能正常運行的時候,Python會在控制臺打印一段提醒,告訴你一個錯誤,這個錯誤就是異常。
錯誤
我在控制臺寫了一段無效的代碼,將print()的括號去掉,在執行這條語句的時候,系統提示語法錯誤,無效的語句(我百度翻譯的)。這就是錯誤處理器所作的工作。
再換一種方式寫錯誤:
在程序獲取用戶輸入的時候,我們使用CTRL+d引發了一個EOFError錯誤,接下來我們嘗試去處理這樣的錯誤。
處理異常
使用try---except語句來處理異常。我們通常把容易產生異常的語句放置在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')
運行結果
我們把所有可能引發錯誤的語句放在try
塊中,然后在except
從句/塊中處理所有的錯誤和異常。except
從句可以專門處理單一的錯誤或異常,或者一組包括在圓括號內的錯誤/異常。如果沒有給出錯誤或異常的名稱,它會處理所有的錯誤和異常。對于每個try
從句,至少都有一個相關聯的except
從句。
你還可以讓try..catch
塊關聯上一個else
從句。當沒有異常發生的時候,else
從句將被執行。
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')
運行結果
raise引發異常
你可以使用raise語句拋出異常。你需要指明錯誤/異常的名稱和伴隨異常觸發的異常對象。這個異常應該是Error和Exception類的子類。這就用到了繼承的思想,使用__init__方法初始一些方法和參數。
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.')
運行結果
try...finally
假如在你讀文件的時候發生了異常,但是無論如何文件都要關閉。這個時候該怎么做呢?
這里我們需要使用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')
運行結果
這里使用了time的sleep函數,里面的參數是它的運行間隔。
這樣我們就有時間去使用CTRL+c使程序發生異常。這時候我們發現finally塊中的語句還是運行的,文件正常關閉了。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中異常的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。