- 與python異常相關的關鍵字
- raise:手動拋出/引發異常:raise [exception[,data]]
- try/except:捕獲異常並處理
- pass:忽略異常
- as:定義異常實例(except IOError as e)
- finally:無論是否出現異常,都執行的代碼
- else:如果try中的語句沒有引發異常,則執行else中的語句
- except Exception as error:
- python中的異常類型
- StandardError類:如果程序上出現邏輯錯誤, 將引發該異常。StandardError類是所有內斂異常的基類,放置在默認的命名空間中,因此使用IOEroor, EOFError, ImportError等類,不需要導入exception模塊。
- StopIteration類:判斷循環是否執行到尾部,如果循環到尾部,則拋出該異常。
- GeneratorExit類:是由Generator函數引發的異常,當調用close()時引發該異常。
- Warning類:表示程序中的代碼引起的警告。
- try ... expect
- try:
- block
- except [exception1(,exception2...),[data…]]:
- block
- (else: block)
- 例1:
- try:
- 1/0
- except ZeroDivisionError as errorinfor:
- print(errorinfor) #輸出詳細錯誤信息:integer division or modulo by zero
- 例2:
- try:
- print "Testing begins!"
- raise MyError #自己拋出一個異常,后面代碼不執行.
- except MyError:
- print 'This a defined error!'
- except:
- print "Other error!"
- try ... finally
- finally 里面只是執行完成try中的代碼后,必須執行的代碼, 即使是 try中有異常拋出,也是會去執行finally
- 所以,一般情況下,finally里面執行的都是一些清理工作,比如:關閉文件描述符,釋放鎖等
- 注意,finally中,如果出現異常,外部如果沒有相應的捕獲機制,該異常會層層拋出,直到最頂端,然后解釋器停止。一般在外層再加一次try except異常捕獲
參考文檔:
- traceback 和 sys模塊: http://www.cnblogs.com/dkblog/archive/2011/06/24/2089026.html
- Python中的異常類型:http://blog.csdn.net/fcoolx/article/details/4202872
- Python中的異常:http://www.pythonpub.com/python-except.html
- Python異常繼承樹:http://www.cnblogs.com/rollenholt/archive/2011/11/25/2263724.htm