在Python中捕捉異常

2021-09-29 13:32:30 字數 3111 閱讀 1012

python中捕捉異常

在python

中,可以使用

try語句處理異常。

可能引發異常的關鍵操作放在

try子句中,並且將處理異常的**編寫在

except

子句中。

捕獲異常後,我們將執行什麼操作取決於我們自己。這是乙個簡單的例子。

# import module sys to get the type of exception

import sys

randomlist = ['a', 0, 2]

for entry in randomlist:

try:

print("the entry is", entry)

r = 1/int(entry)

break

except:

print("oops!",sys.exc_info()[0],"occured.")

print("next entry.")

print()

print("the reciprocal of",entry,"is",r)

輸出量

the entry is a

oops! occured.

next entry.

the entry is 0

oops! occured.

next entry.

the entry is 2

the reciprocal of 2 is 0.5

在此程式中,我們迴圈執行,直到使用者輸入具有有效倒數的整數。可能導致異常的部分放在

try塊中。

如果沒有異常發生,則跳過除塊以外的內容,並繼續正常流程。但是,如果發生任何異常,它將被

except

塊捕獲。

在這裡,我們使用模組

ex_info()

內部的函式列印異常的名稱,

sys並要求使用者重試。我們可以看到,值

「 a」

和「 1.3」

導致valueerror

,而值「 0」

導致zerodivisionerror。

捕獲python中的特定異常

在上面的示例中,我們在

except

子句中未提及任何異常。

這不是乙個好的程式設計習慣,因為它將捕獲所有異常並以相同的方式處理每種情況。我們可以指定

except

子句會捕獲哪些異常。 乙個

try子句可以具有任意數量的

except

子句以不同方式處理它們,但萬一發生異常,則只會執行乙個。

我們可以使用值的元組在

except

子句中指定多個異常。這是示例偽**。

try:

# do something

pass

except valueerror

:# handle valueerror exception

pass

except(

typeerror

, zerodivisionerror

):# handle multiple exceptions

# typeerror and zerodivisionerror

pass

except:

# handle all other exceptions

pass

引發異常

在python

程式設計中,在執行時發生相應的錯誤時會引發異常,但是我們可以使用關鍵字

raise

強制引發它。

我們還可以選擇將值傳遞給異常,以闡明引發該異常的原因。

>>> raise keyboardinterrupt

traceback

(most recent call last):

...keyboardinterrupt

>>> raise memoryerror

("this is an argument"

)traceback

(most recent call last):

...memoryerror

: this isan argument

>>> try:

...     a = int(input(

"enter a positive integer: "

))...     ifa <= 0:

...         raise valueerror

("that is not a positive number!"

)... except valueerror asve:

...     print(ve)

...   

enter

a positive integer: -

2that is nota positive number!

嘗試...最後

python

中的try

語句可以具有可選

finally

子句。該子句無論如何執行,通常用於釋放外部資源。

例如,我們可能通過網路或使用檔案或使用圖形使用者介面(

gui)連線到遠端資料中心。

在所有這些情況下,無論資源是否成功,我們都必須清除該資源。這些操作(關閉檔案,

gui或與網路斷開連線)在

finally

子句中執行,以確保執行。

這是乙個

檔案操作

的例子來說明這一點。

try:

f = open(

"test.txt"

,encoding =

'utf-8'

)# perform file operations

finally:

f.close()

這種型別的構造可確保即使發生異常也關閉檔案。

python的異常捕捉

你可能會說既然有萬能異常exception,那麼我直接用上面的這種形式就好了,其他異常可以忽略 你說的沒錯,但是應該分兩種情況去看 1.如果你想要的效果是,無論出現什麼異常,我們統一丟棄,或者使用同一段 邏輯去處理他們,那麼騷年,大膽的去做吧,只有乙個exception就足夠了。複製 s1 hell...

C 中捕捉異常

trycatch語句理解 try 此處放的是可能會存在異常的 catch 這裡寫要捕捉異常的型別。常見的有三種,nullreferenceexception e,indexoutofrangeexception e,formatexctption e 分別是空引用異常,你所引用的東西不存在,可能是呼...

Python之捕捉異常詳解

目錄 語法錯誤 沒有按照語法規則書寫程式 執行錯誤 執行時出錯 邏輯程式設計客棧錯誤 邏輯上出錯 用異常物件 exception object 表示異常情況 除fmjafdvypk數為0的異常 將被檢測的語句塊放入try塊,將異常處理語句塊放入except塊中 如果被檢測的語句塊中沒有異常,則忽略e...