Python學習筆記13(異常處理)

來源:互聯網
上載者:User

標籤: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(異常處理)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.