Python的錯誤異常在大部分IDE編輯器中則可以直接顯示出來,便於開發人員的調試及修改工作,對初學者也比較友好。 Python中包含錯誤和異常兩種情況,錯誤主要是常見的語法錯誤SyntaxError,並且在錯誤提示中會有倒三角箭頭的修改指示位置;python中的另外一種錯誤提醒叫做異常,指的是在語 ...
Python的錯誤異常在大部分IDE編輯器中則可以直接顯示出來,便於開發人員的調試及修改工作,對初學者也比較友好。
Python中包含錯誤和異常兩種情況,錯誤主要是常見的語法錯誤SyntaxError,並且在錯誤提示中會有倒三角箭頭的修改指示位置;python中的另外一種錯誤提醒叫做異常,指的是在語法和表達式上並沒有錯誤,運行時會發生錯誤的情況。在python中,語法錯誤是直接顯示在相關終端視窗,而異常可以進行錯誤提示,也可以進行捕捉處理。
1 ##如下方代碼不完整,則會報出語法錯誤的提示 2 def foo: 3 4 #下方為內容錯誤的信息提示 5 def foo: 6 7 SyntaxError: invalid syntax
因為在程式執行時,異常報錯提示可能會影響到輸出結果的顯示,此時就可以使用try:...except:...進行異常處理,將錯誤直接輸出列印,而不是以報錯的形式顯示。在python中有很多不同的異常提示方法,官方成為異常類,所有異常類都基於BaseException。大家也可以在官方文檔中查看詳細的繼承關係圖,在一般處理異常的情況下,大多使用Exception與其子類異常,如下就是使用Exception輸出程式執行異常的代碼示例。
1 try: 2 #被除數不能為0,相關錯誤類型為ZeroDivisionError 3 print(1/0) 4 #使用Exception可以將錯誤信息直接輸出 5 except Exception as e: 6 print(e)
使用Exception下的NameError代碼示例:
1 try: 2 print(a) 3 except NameError as n: 4 print(n)
還有一些異常錯誤信息是模塊中自帶的錯誤,比如urllib.error中的HTTPError和URLError,以及json中的JSONDecodeError等。查看底層實現源碼可以看出這些異常也是基於Exception,相當於這些模塊主動拋出一個自定義的異常信息,所以也是可以通過Exception進行輸出。
既然在模塊可以從代碼中實現主動拋出異常錯誤信息,那我們也可以根據自己的需求去拋出相應的異常提示信息。這時候就使用到了raise,代碼示例如下,我們可以在raise中添加一個基類,緊挨基類去添加一個關於異常信息的提示,提示內容可以為漢語,但是儘量不要使用。
1 #raise相關用法 2 try: 3 aaa 4 except BaseException as e: 5 #raise 拋出異常,自定義錯誤的說明 6 raise SyntaxError('Syntax Error') from e 7 #輸出的錯誤結果信息為:變數a未被定義,和主動拋出的異常及說明
try:...except:...語句還可以結合finally進行使用,無論輸出try語句中的正確代碼,還是輸出except中的錯誤信息,finally都會進行輸出列印輸出
1 #finally的用法 2 try: 3 aaa 4 print(1/1) 5 except Exception as e: 6 print(e) 7 #只要有finally,無論正常執行還是報錯,都會執行finally中的內容 8 finally: 9 print(123)
try:...except:..除了可以使用raise拋出異常,和finally進行結合使用,還可以結合else進行使用,else用來返回輸出正確信息,但正確內容大多寫在try語句中,所以else並不常用;try:...except:..語句也可以根據實際情況添加多個except進行處理不同的異常信息,關於更多的用法,大家還可以通過“百度一下”學習更多內容。
以上內容主要幫助大家使用try:...except:...處理異常的方法,如果不清楚使用哪一種異常方法,可以使用通用異常Exception,也可以在except中列印自己定義的錯誤信息。在出現異常的情況下程式有可能會中斷執行,而使用異常處理,則可以跳過這些異常繼續執行正確的代碼;異常處理也可以添加自定義的錯誤信息,在工作中方便與同事之間的配合,這些都是使用異常處理的好處。