異常處理 try與except處理異常語句

2021-08-22 18:17:47 字數 2457 閱讀 6301

def

convert_numbers

(s):

try:

return int(s)

except valueerror:

return

none

try/except介紹

與其他語言相同,在python中,try/except語句主要是用於處理程式正常執行過程中出現的一些異常情況,如語法錯(python作為指令碼語言沒有編譯的環節,在執行過程中對語法進行檢測,出錯後發出異常訊息)、資料除零錯誤、從未定義的變數上取值等;而try/finally語句則主要用於在無論是否發生異常情況,都需要執行一些清理工作的場合,如在通訊過程中,無論通訊是否發生錯誤,都需要在通訊完成或者發生錯誤時關閉網路連線。儘管try/except和try/finally的作用不同,但是在程式設計實踐中通常可以把它們組合在一起使用try/except/else/finally的形式來實現穩定性和靈活性更好的設計。

預設情況下,在程式段的執行過程中,如果沒有提供try/except的處理,指令碼檔案執行過程中所產生的異常訊息會自動傳送給程式呼叫端,如python shell,而python shell對異常訊息的預設處理則是終止程式的執行並列印具體的出錯資訊。這也是在python shell中執行程式錯誤後所出現的出錯列印資訊的由來。

try/except格式

python中try/except/else/finally語句的完整格式如下所示:

try:

normal execution block

except a:

exception a handle

except b:

exception b handle

except:

other exception handle

else:

if no exception,get here

finally:

print("finally")

說明:

正常執行的程式在try下面的normal execution block執行塊中執行,在執行過程中如果發生了異常,則中斷當前在normal execution block中的執行,跳轉到對應的異常處理塊中開始執行;

python從第乙個except x處開始查詢,如果找到了對應的exception型別則進入其提供的exception handle中進行處理,如果沒有找到則直接進入except塊處進行處理。except塊是可選項,如果沒有提供,該exception將會被提交給python進行預設處理,處理方式則是終止應用程式並列印提示資訊;

如果在normal execution block執行塊中執行過程中沒有發生任何異常,則在執行完normal execution block後會進入else執行塊中(如果存在的話)執行。

無論是否發生了異常,只要提供了finally語句,以上try/except/else/finally**塊執行的最後一步總是執行finally所對應的**塊。

需要注意的是:

1.在上面所示的完整語句中try/except/else/finally所出現的順序必須是try–>except x–>except–>else–>finally,即所有的except必須在else和finally之前,else(如果有的話)必須在finally之前,而except x必須在except之前。否則會出現語法錯誤。

2.對於上面所展示的try/except完整格式而言,else和finally都是可選的,而不是必須的,但是如果存在的話else必須在finally之前,finally(如果存在的話)必須在整個語句的最後位置。

3.在上面的完整語句中,else語句的存在必須以except x或者except語句為前提,如果在沒有except語句的try block中使用else語句會引發語法錯誤。也就是說else不能與try/finally配合使用。

4.except的使用要非常小心,慎用。

class

aerror

(exception):

"""aerror---exception"""

print('aerror')

try:

#raise aerror

asdas('123')

except aerror:

print("get aerror")

except:

print("exception")

else:

print("else")

finally:

print("finally")

print("hello wolrd")

在上面的**中,normal execution block中出現了語法錯誤,但是由於使用了except語句,該語法錯誤就被掩蓋掉了。因此在使用try/except是最好還是要非常清楚的知道normal execution block中有可能出現的異常型別以進行針對性的處理。

try與except處理異常語句

與其他語言相同,在python中,try except語句主要是用於處理程式正常執行過程中出現的一些異常情況,如語法錯 python作為指令碼語言沒有編譯的環節,在執行過程中對語法進行檢測,出錯後發出異常訊息 資料除零錯誤 從未定義的變數上取值等 而try finally語句則主要用於在無論是否發生...

try與except處理異常語句

ji 簡介與其他語言相同,在python中,try except語句主要是用於處理程式正常執行過程 現的一些異常情況,如語法錯 python作為指令碼語言沒有編譯的環節,在執行過程中對語法進行檢測,出錯後發出異常訊息 資料除零錯誤 從未定義的變數上取值等 而try finally語句則主要用於在無論...

Swift異常處理的try?與try!

首先要明白丟擲異常後異常的運動 異常被丟擲後,中斷整個處理,異常不斷向外層 範圍 傳遞,直到遇到catch 塊群,會與catch 塊的條件進行匹配,匹配符合則進入此 塊處理。如果遇到沒有條件的catch 那麼直接在這個 裡處理。如果丟擲的異常一直到最外層仍沒有被catch 處理,那麼程式會卡住 後面...