標籤:ebe 檔案 href 屬性 werror rup typeerror bug 過程
搬運自:http://www.cnblogs.com/wupeiqi/articles/5017742.html1.異常基礎
在編程過程中為了增加友好性,在程式出現bug時一般不會將錯誤資訊顯示給使用者,而是現實一個提示的頁面,通俗來說就是不讓使用者看見大黃頁!!!
try: passexcept Exception as ex: pass
2.異常種類
python中的異常種類非常多,每個異常專門用於處理某一項異常!!!
AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性xIOError 輸入/輸出異常;基本上是無法開啟檔案ImportError 無法引入模組或包;基本上是路徑問題或名稱錯誤IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]KeyError 試圖訪問字典裡不存在的鍵KeyboardInterrupt Ctrl+C被按下NameError 使用一個還未被賦予對象的變數SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)TypeError 傳入物件類型與要求的不符合UnboundLocalError 試圖訪問一個還未被設定的局部變數,基本上是由於另有一個同名的全域變數,導致你以為正在訪問它ValueError 傳入一個調用者不期望的值,即使值的類型是正確的
常用異常
ArithmeticErrorAssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEnvironmentErrorEOFErrorExceptionFloatingPointErrorFutureWarningGeneratorExitImportErrorImportWarningIndentationErrorIndexErrorIOErrorKeyboardInterruptKeyErrorLookupErrorMemoryErrorNameErrorNotImplementedErrorOSErrorOverflowErrorPendingDeprecationWarningReferenceErrorRuntimeErrorRuntimeWarningStandardErrorStopIterationSyntaxErrorSyntaxWarningSystemErrorSystemExitTabErrorTypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarningUserWarningValueErrorWarningZeroDivisionError
更多異常
dic = ["wupeiqi", ‘alex‘]try: dic[10]except IndexError, e: print e
執行個體:IndexError
dic = {‘k1‘:‘v1‘}try: dic[‘k20‘]except KeyError, e: print e執行個體:KeyError
s1 = ‘hello‘try: int(s1)except ValueError, e: print e
執行個體:ValueError
對於上述執行個體,異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。
# 未捕獲到異常,程式直接報錯 s1 = ‘hello‘try: int(s1)except IndexError,e: print e
所以,寫程式時需要考慮到try代碼塊中可能出現的任意異常,可以這樣寫:
s1 = ‘hello‘try: int(s1)except IndexError,e: print eexcept KeyError,e: print eexcept ValueError,e: print e
萬能異常 在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常,即
s1 = ‘hello‘try: int(s1)except Exception,e: print e
接下來你可能要問了,既然有這個萬能異常,其他異常是不是就可以忽略了!
答:當然不是,對於特殊處理或提醒的異常需要先定義,最後定義Exception來確保程式正常運行。
s1 = ‘hello‘try: int(s1)except KeyError,e: print ‘鍵錯誤‘except IndexError,e: print ‘索引錯誤‘except Exception, e: print ‘錯誤‘
3、異常其他結構
try: # 主代碼塊 passexcept KeyError,e: # 異常時,執行該塊 passelse: # 主代碼塊執行完,執行該塊 passfinally: # 無論異常與否,最終執行該塊 pass
4.主動觸發異常
try: raise Exception(‘錯誤了。。。‘)except Exception,e: print e
5.自訂異常
class WupeiqiException(Exception): def __init__(self, msg): self.message = msg def __str__(self): return self.message try: raise WupeiqiException(‘我的異常‘)except WupeiqiException,e: print e
Python學習筆記13(異常處理)