一、什麼事異常python
Python使用異常對象(exception object) 來表示異常狀況。遇到錯誤會發生異常。程序員
若是異常對象未被處理或被捕捉,程序就會用所謂的回溯(traceback,一種錯誤信息)終止執行。函數
每一個異常都是一些類的(本例中是ZeroDivisionError)實例,這些實例能夠被引起,而且能夠用不少種方式進行捕捉,使程序捕捉異常並處理異常,從而避免整個程序崩潰。學習
2.、按本身的方式出錯3d
全部的異常類,都是Exception的子類。對象
2.一、raiseblog
要引起異常,要麼是Exception的子類。或者實例參數調用raise。繼承
返回,沒有任何有關錯誤信息的普通錯誤。返回,一些有關「hyperdrive overload」的錯誤信息。索引
自定義異常類 作用域
Class SomeCustomException(Exception):pass
三、捕獲異常
這個功能可使用 try/except來實現。
若是捕獲了異常,但又想從新引起它(也就是說傳遞異常),那就能夠調用不帶參數的raise。
四、多個except子句
由於繼承eccept的字異常類有不少,若是隻捕獲一種錯誤(上例 捕捉ZeroDivisionError,若是除數爲0正常被過捕獲,當除數是一個字符串的時候那就回引起TypeError的錯誤,就被漏掉。),引其餘錯誤將被漏掉。
五、用一個塊捕獲多個異常
用一塊捕獲多個類型的異常,能夠把異常類型做爲元祖列出。
六、捕獲對象
但願在except子句中訪問異常對象自己,可使用兩個參數。
七、全捕捉
一段代碼捕捉全部的異常。可使用except子句中忽略全部異常類。
隱藏全部的錯誤是很危險的事情,由於會異常全部程序員想不到的錯誤。
八、萬事大吉----else子句
try:
print('正常代碼塊 ')
except:
print('當發生異常的時候執行。')
else:
print('這是一個沒有任何異常的程序。')
九、最後。。。。。。
最後,是Finally子句。它能夠用來在可能的異常後進行清理。
注意在2.5之前的版本中,finally是獨立的,不能組合使用,2.5之後的版本能夠隨意使用了。
十、異常和函數
異常和函數能很天然的一塊兒工做。若是異常在函數內部引起而不被處理,它就會傳播至(浮到)調用的地方。,若是在那裏也沒處理異常,它就會繼續傳播,一直到達主程序(全局做用域)
若是那裏沒有異常處理程序,程序會帶這堆棧跟蹤停止。