異常處理機制
try...except...
try後面放可能出錯的語句,except後面放錯誤的處理辦法
try...except...finally...
無論異常是否發生,finally語句都會執行
try...except...else...finally...
如果錯誤不發生則執行else中的內容,並且繼續向下執行
raise語句指定一個異常
def is_work_done():
a=3/1
return a
try:
is_work_done()
raise NameError("HELLO")
except:
print("hello")
raise #raise的唯一參數是異常的類或者實例(也就是exception的子類)
如果你只想知道這是否拋出了一個異常,並不想去處理它,那麼一個簡單的 raise 語句就可以再次把它拋出。
自定義異常
class MyError(Exception):
def __init__(self,value):
super().__init__()
self.value=value
try:
raise MyError(9)
except MyError as e:
print(e.value)
注意事項
- 只處理你知道的異常,避免捕獲所有異常然後吞掉它們。
- 拋出的異常應該說明原因
- 如果有需要,切記使用
finally
來釋放資源 - 如果有需要,請不要忘記在處理異常後做清理工作或者回滾操作