Python/異常
外觀
< Python
try:
語句
except (異常型態1,異常型態2,...):
語句
except: # Any other exception
語句
raise #重新抛出異常
else: # 必须在所有except子句之后,如果try子句没有抛出异常则执行。
語句
finally:
語句 #不管 try 子句里面有沒有發生異常,finally 子句都會執行。沒有任何的except截獲的異常會在 finally 子句執行後再次被抛出。
語義為:首先執行try子句內的語句。如果沒有異常發生,忽略except子句,執行其後的語句。如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分將被忽略;如果異常的型態和 except 之後的名稱相符,那麼對應的except子句將被執行。 如果一個異常沒有與任何的except匹配,那麼這個異常將會傳遞給上層的try中。
with 語句保證對象在使用完之後一定會正確的執行它的清理方法,無論執行中是否發生了異常。
raise語句用於故意拋出一個異常
raise TypeError raise ValueError, "I can't cope with a negative number here."
定製的異常類型:
class CustomException(Exception):
def __init__(self, value):
self.parameter = value
def __str__(self):
return repr(self.parameter)