1. 程式人生 > >Python 從入門到進階之路(六)

Python 從入門到進階之路(六)

之前的文章我們簡單介紹了一下 Python 的面向物件,本篇文章我們來看一下 Python 中異常處理。

我們在寫程式時,有可能會出現程式報錯,但是我們想繞過這個錯誤執行操作。即使我們的程式寫的沒問題,但是在執行時也可能會出錯,這是我們就需要將異常丟擲來解決,如下程式碼:

1 print(name)
2 print("1111")

在上面的程式碼中,我們想列印輸出 name 值,但是我們並沒有提前宣告該變數,所以程式會丟擲異常,但我們並不想讓程式報錯,可以如下解決:

1 try:
2     print(name)
3 except NameError:
4     print("發生了異常")  # 發生了異常
5 print("1111")  # 1111

根據上面的程式碼不難發現,我們可以使用 try except 語法來跳過這個異常執行接下來的程式碼。

異常處理的詳細寫法如下:

 1 try:
 2     print("123")
 3 except (NameError,FileExistsError):
 4     print(NameError,FileExistsError)
 5     print("如果捕獲到異常後做的處理")
 6 except Exception as ret:
 7     print("如果用了 Exception,那麼意味著只要上面的 except 沒有捕獲到異常,這個 except 一定會捕獲到")
 8     print(ret)
 9 else:
10     print("沒有異常才會執行的功能")
11 finally:
12     print("無論有沒有異常都執行")
13 
14 print("1111")
15 
16 '''
17 123
18 沒有異常才會執行的功能
19 無論有沒有異常都執行
20 1111
21 '''

從上面的輸出結果我們可以看出,當程式沒有錯誤正常執行時,程式執行了 else,finally 兩個異常處理。

 1 try:
 2     print(name)
 3 except (NameError,FileExistsError):
 4     print(NameError,FileExistsError)
 5     print("如果捕獲到異常後做的處理")
 6 except Exception as ret:
 7     print("如果用了 Exception,那麼意味著只要上面的 except 沒有捕獲到異常,這個 except 一定會捕獲到")
 8     print(ret)
 9 else:
10     print("沒有異常才會執行的功能")
11 finally:
12     print("無論有沒有異常都執行")
13 
14 print("1111")
15 
16 '''
17 <class 'NameError'> <class 'FileExistsError'>
18 如果捕獲到異常後做的處理
19 無論有沒有異常都執行
20 1111
21 '''

從上面的輸出結果我們可以看出,如果程式報錯且第一個 except 捕獲到異常,程式執行了第一個 except,finally 兩個異常處理。

 1 try:
 2     1/0
 3 except (NameError,FileExistsError):
 4     print(NameError,FileExistsError)
 5     print("如果捕獲到異常後做的處理")
 6 except Exception as ret:
 7     print("如果用了 Exception,那麼意味著只要上面的 except 沒有捕獲到異常,這個 except 一定會捕獲到")
 8     print(ret)
 9 else:
10     print("沒有異常才會執行的功能")
11 finally:
12     print("無論有沒有異常都執行")
13 
14 print("1111")
15 
16 '''
17 如果用了 Exception,那麼意味著只要上面的 except 沒有捕獲到異常,這個 except 一定會捕獲到
18 division by zero
19 無論有沒有異常都執行
20 1111
21 '''

從上面的輸出結果我們可以看出,如果程式報錯且第二個 except 捕獲到異常,程式執行了第二個 except,finally 兩個異常處理。

在編寫程式中,我們不可避免地會使用丟擲異常來處理我們的程式使其能正常執行,但是我們應儘量少的使用跑出異常。

&n