xia的小窩

一起來coding和碼字吧

0%

異常處理

異常概述

在程式運行途中,經常會遇到各式各樣的錯誤,這些錯誤被統稱為異常。這類錯誤大部分都是SyntaxError : invaild syntax(無效的語法)

舉例

1
NameError: name 'sss' is not defined

異常處理語句,使用try…except

1
2
3
4
5
6
7
try:
block1
except [ExceptionName[as alias]]:
block2

# block1表示可能出錯的程式碼區塊
# ExceptionName[as alias]: 可選參數,用於要指定捕獲的異常

舉例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def divsion():
nums = int(input())
if nums != 0:
print("num 不等於 0")

if __name__ == '__main__':
try:
divsion()
except ZeroDivisionError:
print("不是整數")
except ValueError as e :
print("輸入錯誤")
# input x
# output 輸入錯誤"

如果需要同時處理多個異常……

1
2
3
4
5
6
# 複製上面的部分
if __name__ == '__main__':
try:
divsion()
except (ValueError, ZeroDivisionError) as e:
print("Error: ", e)


這樣就能印出是出了甚麼問題

異常處理語句,使用try…except…else

在上面的程式碼加上

1
2
3
4
5
else:
print("毫無錯誤")
# number
# num不等於0
# 毫無錯誤

異常處理語句,使用try…except…finally

finally加上後,代表不論發生甚麼狀況,都會執行這些程式碼

1
2
finally:
print("already")

使用raise語句拋出異常

1
raise [ExceptionName[(reason)]]

舉例,可以修改成……

1
2
3
4
5
6
7
8
9
10
def divsion():
nums = int(input())
if nums >= 0:
print("num 大於 0")
if nums == 5:
raise ValueError("Nope")

# 5
# num 大於 0
# 輸入錯誤 Nope