1. 程式人生 > >Python中的異常處理和try,except的用法

Python中的異常處理和try,except的用法

  在各種程式語言進行工作和學習的過程中,都會有一些錯誤異常,這些錯誤則以不同的方式去展現出來,但是也有一些程式語言的錯誤資訊無法直接看到,比如html和css,只能通過頁面顯示的最終結果來判斷是否有錯誤。Python的錯誤異常在大部分IDE編輯器中則可以直接顯示出來,便於開發人員的除錯及修改工作,對初學者也比較友好。
  Python中包含錯誤和異常兩種情況①,錯誤主要是常見的語法錯誤SyntaxError,如下圖所示,並且在錯誤提示中會有倒三角箭頭的修改指示位置;python中的另外一種錯誤提醒叫做異常,指的是在語法和表示式上並沒有錯誤,執行時會發生錯誤的情況。在python中,語法錯誤是直接顯示在相關終端視窗,而異常可以進行錯誤提示,也可以進行捕捉處理。

python異常處理南雪python

  因為在程式執行時,異常報錯提示可能會影響到輸出結果的顯示,此時就可以使用try:...except:...進行異常處理②,將錯誤直接輸出列印,而不是以報錯的形式顯示。在python中有很多不同的異常提示方法,官方成為異常類,所有異常類都基於BaseException③。大家也可以在官方文件中檢視詳細的繼承關係圖,在一般處理異常的情況下,大多使用Exception與其子類異常,如下圖就是使用Exception輸出程式執行異常的程式碼示例。

python異常處理南雪python

  使用Exception下的NameError程式碼示例:

python異常處理南雪python

  還有一些異常錯誤資訊是模組中自帶的錯誤,比如urllib.error中的HTTPError和URLError,以及json中的JSONDecodeError等。檢視底層實現原始碼可以看出這些異常也是基於Exception,相當於這些模組主動丟擲一個自定義的異常資訊,所以也是可以通過Exception進行輸出。如下圖:

python異常處理南雪python

  既然在模組可以從程式碼中實現主動丟擲異常錯誤資訊,那我們也可以根據自己的需求去丟擲相應的異常提示資訊。這時候就使用到了raise④,程式碼示例如下,我們可以在raise中新增一個基類,緊挨基類去新增一個關於異常資訊的提示,提示內容可以為漢語,但是儘量不要使用。

python異常處理南雪python

  try:...except:...語句還可以結合finally進行使用,無論輸出try語句中的正確程式碼,還是輸出except中的錯誤資訊,finally都會進行輸出列印輸出,程式碼示例圖下圖所示。

python異常處理南雪python

  try:...except:..除了可以使用raise丟擲異常,和finally進行結合使用,還可以結合else進行使用,else用來返回輸出正確資訊,但正確內容大多寫在try語句中,所以else並不常用;try:...except:..語句也可以根據實際情況新增多個except進行處理不同的異常資訊,關於更多的用法,大家還可以通過“百度一下”學習更多內容。
  以上內容主要幫助大家使用try:...except:...處理異常的方法,如果不清楚使用哪一種異常方法,可以使用通用異常Exception,也可以在except中列印自己定義的錯誤資訊。在出現異常的情況下程式有可能會中斷執行,而使用異常處理,則可以跳過這些異常繼續執行正確的程式碼;異常處理也可以新增自定義的錯誤資訊,在工作中方便與同事之間的配合,這些都是使用異常處理的好處。
  以下為參考文件,依順序對應文中數字,建議使用chrome瀏覽器進行翻譯檢視,利於理解:
  ①https://docs.python.org/3.6/tutorial/errors.html?highlight=exceptions
  ②https://docs.python.org/3.6/reference/compound_stmts.html#except
  ③https://docs.python.org/3.6/library/exceptions.html
  ④https://docs.python.org/3.6/reference/simple_stmts.html#raise