1. 程式人生 > >python 捕獲異常順序

python 捕獲異常順序

catch 異常的時候,有關的異常(若是丟擲子類異常,則父類異常的except也算。反之不算)except的語句是按程式碼順序執行,

也就是說,當一個異常發生時,從若干except中若遇見異常類基類,父類,自身則按照程式碼順序,執行最早遇見的那個except語句。

異常類中變數呼叫順序則是子類先從子類中找,找不到再往上層找,沒有什麼特別(下例會輸出''hi'',而不是''boom'')。

如:

# -*- coding:utf-8 -*-


class MyException(Exception):
    def __init__(self):
        self.mes 
= 'err' self.msg = 'boom' def __str__(self): return self.msg class LogoutError(MyException): def __init__(self): self.msg = 'hi' self.message = 'hello' try: raise LogoutError except Exception as e: print(e.msg) except LogoutError as e: print(e.msg, 1111111)

會執行Excption中的語句。不會執行LogoutError語句。

output:

hi