Python中異常捕獲與處理的方法是什麼

WBOY
發布: 2023-05-10 20:19:05
轉載
1695 人瀏覽過

Python異常是程式執行時發生的錯誤,可能會導致程式終止運行。

在Python中,異常處理是一種機制,它允許開發人員在程式發生異常時捕獲、處理和報告這些異常,以便程式可以繼續運行或在出現異常時進行優雅的退出。

在Python中,異常可以是標準異常(例如SyntaxError和TypeError)或自訂異常。標準異常是由Python內部定義的,而自訂異常是由開發人員定義的,通常用於特定的應用程式或程式庫。

以下是一些常見的Python異常:

  • #SyntaxError:語法錯誤,通常是由於語法錯誤導致的,如缺少括號、冒號等。

  • TypeError:類型錯誤,通常是由於將不同類型的物件組合在一起而引起的,例如將字串和數字相加。

  • ValueError:值錯誤,通常是由於提供的值不符合預期的範圍或格式而引起的,如將字串轉換為整數時提供的字串無效。

  • IndexError:索引錯誤,通常是由於嘗試存取清單或元組中不存在的元素而引起的。

  • KeyError:鍵錯誤,通常是由於嘗試存取字典中不存在的鍵而引起的。

  • IOError:輸入/輸出錯誤,通常是由於嘗試讀取或寫入檔案時出現問題而引起的。

  • AttributeError:屬性錯誤,通常是由於嘗試存取物件不存在的屬性或方法而引起的。

在Python中,可以使用try-except語句來捕獲異常並處理它們。 try語句包含可能會導致例外狀況的程式碼,而except語句定義了在擷取例外狀況時要執行的程式碼。

可以使用多個except語句來捕捉不同類型的異常,try-except 還可以跟else 進行搭配,它的意思就是當try 語句沒有檢測到任何異常的情況下,就執行else 語句的內容,另外也可以使用finally語句定義在try語句區塊之後總是要執行的程式碼。

例如:

案例1:使用try-except語句來擷取例外狀況並處理它們

##範例:

try:

100/0 # 可能會導致例外的程式碼

except ZeroDivisionError: #(捕获特定的异常类型ZeroDivisionError,ZeroDivisionError是Python中的内置异常类之一,用于表示在除数为零的情况下进行了除法操作所引发的异常。)

    print('因为这里打印出异常类型:除数不能为0。')# 处理值错误的代码
登入後複製

Python中異常捕獲與處理的方法是什麼

案例2:使用try- except語句搭配else語句(當try 語句沒有偵測到任何例外的情況下,就執行else 語句的內容)

當try 語句偵測到任何例外的情況下,則不執行else 語句的內容

>>> try:
...     1 / 0
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
登入後複製

逮捕到了~

如果在try 語句中偵測到異常,那麼就執行except 語句的異常處理內容:

>>> try:
...     1 / 1
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
1.0
登入後複製

沒逮捕到~

案例3:使用try-except語句搭配finally語句(無論異常發生與否,都必須要執行的語句finally語句)

舉例:

try:

‘abc’ 123

except TypeError: #TypeError为类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。
    print('因为这里打印出异常类型:类型错误。')# 处理类型错误的代码
finally:
    print('不论是否无法异常,都执行这句话') # 无论是否发生异常都会执行的代码
登入後複製

Python中異常捕獲與處理的方法是什麼

異常處理是Python中的重要概念之一,開發人員應該了解如何正確地捕獲和處理異常,以確保程序的穩定性和可靠性。

進階:捕獲異常的方法

捕獲異常的兩種方法:不管是何種異常,都捕獲異常資訊。

1.使用Exception:所有的例外都是 Exception 的子類別。所以 Exception能匹配所有類型的異常。

範例:

>>> try:
    100/0
except Exception  as e:
    print('未知异常:', e)
# 对于很多刚学Python或者是学着学着迷茫了的小伙伴,我给大家准备了一套Python的学习资料。
# 包括数百本电子书、Python基础视频教程、项目实战,疑难解答,直接在文末名片自取。
   
未知异常: division by zero
>>>
登入後複製

可以正常捕捉到異常的原因,但不能輸出詳細的異常訊息(發送異常的位置和異常的程式碼)。

2.使用traceback模組:使用traceback模組裡面的format_exc函數,可以顯示異常的資訊 和 異常產生處的函數呼叫堆疊的資訊。

範例:

>>>  import traceback
>>>  try:
    100/0
except  :
    print(traceback.format_exc())
 
 
Traceback (most recent call  last):
  File "<pyshell#5>", line 2, in <module>
ZeroDivisionError: division by  zero
>>>
登入後複製
上面的程式碼會列印出導致異常的詳細的函數呼叫堆疊的資訊

以上是Python中異常捕獲與處理的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!