Python下異常處理

程序報錯?太常見了,咱們能夠想辦法修理好它

捕獲異常

number="hello"
try:
    #有可能出錯的語句
    number=int(number)
except Exception:
    print("出錯了") 
else:
    print("沒錯的時候運行")

except後面指定了報錯的異常類,在python中重要的內建異常類有:python

  1. Exception 常規錯誤的基類
  2. AttributeError 對象沒有這個屬性
  3. IOError 輸入/輸出操做失敗
  4. IndexError 序列中沒有此索引(index)
  5. KeyError 映射中沒有這個鍵
  6. NameError 未聲明/初始化對象 (沒有屬性)
  7. SyntaxError Python 語法錯誤
  8. SystemError 通常的解釋器系統錯誤
  9. ValueError 傳入無效的參數

...
除了上述列出來的,其實python的異常類還有不少,當在except後面指定異常類以後,那麼只有報這個類型異常的時候纔會輸出「出錯了」
固然咱們也能夠去掉Exception,這樣任何異常均可以捕獲到
捕獲多個異常如何作this

#指定多個異常
number="hello"
try:
    #有可能出錯的語句
    number=int(number)
except ValueError:
    print("ValueError出錯了")   
except Exception:
    print("Exception出錯了") 
else:
    print("沒錯的時候執行的語句")    
finally:
    print("不管發不發生異常,都會執行的語句")
    
#指定多個異常
number=[1,2,3]
try:
    #有可能出錯的語句
    number=number[4]
except (ValueError,NameError,IndexError):
    print("出錯了")   
else:
    print("沒錯的時候運行")

自定義異常類

儘管python給咱們提供了不少內置的異常類,可是仍是不能知足精肯定位的問題,咱們能夠經過建立一個新的exception類擁有本身的異常,異常應該繼承自Exception類,能夠直接繼承,也能夠間接繼承code

class MyError(Exception):
    def __init__(self):
        pass
    def __str__(self):
        return "this is error"        

def Calc():
    raise MyError()   #經過raise語句拋出一個錯誤的實例 

Calc()
相關文章
相關標籤/搜索