python關於try except的使用方法


  一、常見錯誤總結

  AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x

  IOError 輸入/輸出異常;基本上是無法打開文件

  ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤

  IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊

  IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

  KeyError 試圖訪問字典里不存在的鍵

  KeyboardInterrupt Ctrl+C被按下

  NameError 使用一個還未被賦予對象的變量

  SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)

  TypeError 傳入對象類型與要求的不符合

  UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由於另有一個同名的全局變量,

  導致你以為正在訪問它

  ValueError 傳入一個調用者不期望的值,即使值的類型是正確的

  二、try except方法

  有時候我們寫程序的時候,會出現一些錯誤或異常,導致程序終止,這個時候我們需要捕獲錯誤的類型,讓代碼更靈活,下面介紹下常用的try except來進行捕獲異常的方法。

  處理單個異常:

  語法:

  >>> try:

  >>> code

  >>> except Error1 as e: #處理Error1異常

  >>> print(e)

  demo

  >>> try:

  >>> print(5/0) #該行為測試的語句

  >>> except ZeroDivisionError as e: ## 如果測試的語句出現except后的異常(例中的ZeroDivisionError),則執行下一行代碼,否則跳過此模塊

  >>> print(e) ## 打印錯誤名稱

  division by zero ##執行結果

  分開處理多個異常:

  語法

  >>> try:

  >>> code

  >>> except Error1 as e: #處理Error1異常

  >>> print(e)

  >>> except Error2 as e: #處理Error2異常

  >>> print(e)

  demo

  >>> a = [0,1]

  >>> try:

  >>> print(a[3])

  >>> print(5/0) ##語句在上一行就遇到錯誤傳到except里面去了,未檢測到此語句

  >>> except ZeroDivisionError as e: #處理Error1異常

  >>> print(e)

  >>> except IndexError as e: #處理Error2異常

  >>> print(e)

  list index out of range

  統一處理多個異常:

  語法

  >>> try:

  >>> code

  >>> except (Error1,Error) : ###無論遇到什么異常,都只會執行下一行要打印的一種東西

  >>> print(e)

  沒有異常,則走else部分的邏輯代碼

  語法:無錫做婦科檢查哪家好 http://www.csjlyyfk.com/

  >>> try:

  >>> code

  >>> except (Error1,Error2,...) as e:

  >>> print(e)

  >>> else:

  >>> print("沒有錯誤,執行")

  demo

  >>> try:

  >>> print(5/1)

  >>> except ZeroDivisionError as e:

  >>> print(e)

  >>> else:

  >>> print("沒有錯誤")

  沒有錯誤

  不管有沒有錯誤,都會執行finnally中的代碼

  例如在對文件進行操作時候,如果文件讀寫過程中出現錯誤,無法關閉,可以將f.close()放在finally中,這樣無論是否有錯誤,文件都會關閉

  >>> try:

  >>> code

  >>> except (Error1,Error2,...) as e:

  >>> print(e)

  >>> else:

  >>> print("沒有錯誤,執行")

  >>> finnally:

  >>> print("不管有沒有錯,都執行finnally")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM