python3 異常處理

2021-09-16 18:05:35 字數 2972 閱讀 7877

python中的異常捕獲、異常處理語句關鍵字有try、except、else、finally,主要組合如下:

1.不捕獲異常,不管是否異常仍要執行操作(finally)

先執行finally中的語句,再丟擲異常。

# 不捕獲異常,丟擲異常後,仍執行finally中的語句

try:

print(1/0)

finally:

print('執行了')

# 執行了

# traceback (most recent call last):

# file "/users/***/test.py", line 3, in # print(1/0)

# zerodivisionerror: division by zero

2.捕獲所有的異常(最好不要用)

# 捕獲所有的異常

try:

print(1/0)

except:

print('有異常了')

3.捕獲指定的異常

捕獲一種異常

try:

print(1/0)

except zerodivisionerror:

print('zerodivisionerror: division by zero')

同時捕獲多種異常(實際上也只是捕獲其中的一種,只是可捕獲的種類多了)

try:

print(1/0)

print(int('he'))

except (zerodivisionerror,valueerror) as error:

print(error)

只捕獲了zerodivisionerror異常,輸出:'division by zero'

try:

print(12[0])

print(int('he'))

except (zerodivisionerror,valueerror,typeerror) as error:

print(type(error),'***',error)

捕獲了typeerror異常,輸出:*** 'int' object is not subscriptable

4.只在沒有異常時執行(else)

try:

print('123')

except (zerodivisionerror,valueerror,typeerror) as error:

print(type(error),'***',error)

else:

print('沒有異常')

5.可捕獲異常,不管有沒有異常,都要執行(finally)

先執行except下的語句,再執行finally下的語句。

try:

print(1/0)

except (zerodivisionerror,valueerror,typeerror) as error:

print(type(error),'***',error) # *** division by zero

finally:

print('異常也要執行') # 異常也要執行

6.所有**齊上陣

def divide(x, y):

try:

result = x / y

except zerodivisionerror:

print("被除數不能是0")

else:

print("除法結果是:", result)

finally:

print("執行了finally")

當丟擲的異常不在可捕獲的異常中時,先執行finally中的語句,再丟擲異常

divide('234','456')

# 執行了finally

# traceback (most recent call last):

# file "/users/menghua/documents/pythonworkspace/flasktest/test.py", line 11, in # divide('234','456')

# file "/users/menghua/documents/pythonworkspace/flasktest/test.py", line 3, in divide

# result = x / y

# typeerror: unsupported operand type(s) for /: 'str' and 'str'

當丟擲的異常**獲,則先執行except中的語句,再執行finally中的語句

divide(123,0)

# 被除數不能是0

# 執行了finally

沒有異常丟擲時,先執行else中的語句,再執行finally中的語句

divide(123,12)

# 除法結果是: 10.25

# 執行了finally

7.引發異常raise

先執行except中的語句,再執行finally中的語句

try:

raise valueerror('丟擲異常的提示資訊,不加引數則只是會捕獲異常,不會有提示資訊')

except valueerror as error:

print(error) # 丟擲異常的提示資訊,不加引數則只是會捕獲異常,不會有提示資訊

else:

print('沒有異常')

finally:

print('異常也要執行') # 異常也要執行

ps:以上幾種異常處理方式中語句的關鍵字順序不可修改。

Python3 異常處理

python3.5 異常處理 try用法 try except語句主要是用於處理程式正常執行過程中出現的一些異常情況 try finally語句則主要用於在無論是否發生異常情況,都需要執行一些清理工作的場合 完整語句中,else語句的存在必須以except x或者except語句為前提,也就是說el...

Python3異常處理

在程式設計過程中為了增加友好性,在程式出現bug時一般不會直接將錯誤資訊展示給使用者,而是提供乙個友好的輸出提示。1.異常基礎 常用結構 try pass except exception,ex pass 其他結構 try 主 塊 pass except keyerror,e 異常時,執行該塊 pa...

python3 異常處理

try dic dic b keyerror lst a b lst 10 indexerror s 2gb s int s valueerror except valueerror as e e為異常的值 print e except keyerror as e print e except in...