異常簡介 | Python從入門到精通:高階篇之四十
異常傳播
def fn():
print('Hello fn')
fn()
執行結果:
此時可以正常執行輸出。
在全局中添加代碼,造成異常:
print(10/0)
執行結果:
我們在函數中添加異常代碼:
def fn():
print('Hello fn')
print(10/0)
fn()
執行結果:
當在函數中出現異常時,如果在函數中對異常進行了處理,則異常不會再繼續傳播;如果函數中沒有對異常進行處理,則異常會繼續向函數調用處傳播;如果函數調用處處理了異常,則不再傳播,如果沒有處理則繼續向調用處傳播;直到傳遞到全局作用域(主模塊)如果依然沒有處理,則程序終止,並且顯示異常信息。
我們修改上述代碼:
def fn():
print('Hello fn')
print(10/0)
try:
fn()
except:
pass
執行結果:
此時異常就被處理掉了,程序可以正常執行。
我們再來看一個:
def fn():
print('Hello fn')
print(10/0)
def fn2():
print('Hello fn2')
fn()
fn2()
def fn3():
print('Hello fn3')
fn2()
fn3()
執行結果:
我們可以看出異常未經過處理,傳播的過程。即拋出異常。
當程序運行過程中出現異常以後,所有的異常信息會被保存一個專門的異常對象中,而異常傳播時,實際上就是異常對象拋給了調用處。
比如 : ZeroDivisionError類的對象專門用來表示除0的異常;
NameError類的對象專門用來處理變量錯誤的異常;
....
在Python為我們提供了多個異常對象 。
我們通過官方文檔去查找。
裡面提供了很多的異常信息。
我們是通過對象拋出異常的,那麼如何知道異常的信息呢?我們下一節來看。
配套視頻課程,點擊這裡查看
獲取更多資源請訂閱Python學習站