python快速學習系列(8) 異常處理

2021-09-02 07:41:43 字數 2356 閱讀 1148

-異常通常出現的處理方式

·條件語句:if/else

·異常處理:try/except/else/finally

1.python中的異常和相關語法

·exception:python內建的異常類

·raise:丟擲異常

·try:嘗試執行以下語句

·except:在try語句之後,捕獲某個異常,為空則捕獲全部異常(很危險難以debug)

·else:在try語句之後,如果沒有捕獲到異常,則執行

·finally:在try語句之後,無論是否捕獲到異常,均執行

1)

try:     #嘗試執行下面的語句

print("enter try")

except: #出現異常就捕獲,這裡是捕獲全部異常(可以在except後面空格加具體異常)

print("enter except")

else: #沒有出現異常則執行

print("enter else")

finally:

print("enter finally")

#以上,except和else只執行其一,finally永遠最後執行

2)

try:     #嘗試執行下面的語句

print("enter try")

1 / 0

except zerodivisionerror:

print("enter except zerodivisionerror")

except arithmeticerror:

print("enter except arithmeticerror")

except:

print("enter except")

else: #沒有出現異常則執行

print("enter else")

finally:

print("enter finally")

3)

mode = 'debug'

try:

print('enter try')

1 / 0

except exception as e:

print("enter except")

if mode == 'debug':

raise #丟擲異常,而且是執行完finally之後才丟擲異常,因為一旦丟擲異常程式就會中斷

elif mode == 'warn':

print(e) #僅僅列印提示資訊,不丟擲異常。而且是先列印提示資訊,再執行finally(因為程式不會中斷)

else:

print("enter else")

finally:

print("enter finally")

2.異常的傳播

def f1():

try:

return 1 / 0

except exception as e:

print("this is f1.")

print(e)

raise

def f2():

try:

f1()

except exception as e:

print("this is f2.")

print(e)

def f3():

try:

f2()

except exception as e:

print("this is f3.")

print(e)

def main():

try:

f3()

except exception as e:

print("this is main")

print(e)

if __name__ == "__main__":

try:

main()

except exception as e:

print("this is __main__")

print(e)

以上**輸出結果:

this is f1

division by zero

this is f2.

division by zero

原因是:f1雖然捕獲了異常,但是將其丟擲了,丟擲的異常又被f2給捕獲了,而f2並未丟擲,所以在之後都檢測不到

如果所以函式都加上raise的話,但最後的__main__不加上,則所有函式都會列印相應的結果

如果連最後的__main__都加上raise的話,則直接traceback了,涼涼

Python學習8 異常處理

執行try子句 在關鍵字try和關鍵字except之間的語句 如果沒有異常發生,忽略expect子句,try子句執行結束。但是如果有異常發生,那麼將直接忽略後面的語句,執行expect,若expec後面的錯誤於該錯誤相符,那麼執行該expect後面的語句。乙個try可以對應多個expect.如果乙個...

Python 快速入門筆記(8) 異常處理

python 中的異常處理有許多與 c 中類似的部分,比如 raise 語句與 c 中的 throw 語句相似,try except 語句與 c 中的 try catch 語句相似。當然也有一些不同的地方,比如 python 中可以捕獲 除數為0 這種執行時錯誤,而 c 就不能,例如 x int i...

快速了解python異常

1 valueerror 值錯誤 操作的資料出現問題 例 int e 型別轉換,輸入了資料 非數字字元,valueerror 2 nameerror 名稱錯誤 操作的變數出現問題 print name 列印變數中的資料,變數 name 沒有定義 nameerror 3 indexerror 索引錯誤...