0%

[學習] Pyton try - except

在開發程式的過程中,難免有會遇到錯誤,例如:使用者輸入不正確的資料、網路連線問題或語法上的問題等,如果沒有做好例外處理的機制,程式碼可能因此而中斷,還會讓使用者看到錯誤訊息,對產品使用的觀感不佳,體驗也會大打折扣。因此,在開發的過程中要考慮到錯誤發生時,程式碼要如何做適當的反應。

Python 在例外處理的機制為:

try 執行
except 例外
else 都沒出錯就執行這區塊
finally 任何狀況下都會執行的區塊

而錯誤類型可以至該網址查看,常見ValueError(ex: int(hi))、ZeroDivisionError(ex: x = 2/0)、

先來個完整的架構的範例:

1
2
3
4
5
6
7
8
9
10
11
12
def func(x, y):
try:
result = x / y
except ZeroDivisionError:
print("不能除以零!")
else:
print("結果是:", result)
finally:
print("Hi,我一定會執行")
func(4, 2)

func(2, 0)

output:

1
2
3
4
5
結果是: 2.0
Hi,我一定會執行
--------------
不能除以零!
Hi,我一定會執行

一般來說可以這樣寫:

1
2
3
4
try:
正常時要執行的程式
except <error type>:
錯誤時要執行程式

不確定的錯誤類型的話 error type 可以不寫

example:

1
2
3
4
5
6
7
def func(x, y):
try:
result = x / y
except:
print("something wrong")

func(4, 0)
1
something wrong

sys.exc_info()[0] 可以用來取出 except 的錯誤訊息

1
2
3
4
5
6
7
8
import sys

i = 'o'
try:
result = i / 0
print(result)
except:
print("Unexpected error:", sys.exc_info()[0])

output:

1
Unexpected error: <class 'TypeError'>