python的中異常處理機制

2022-09-28 06:00:18 字數 3342 閱讀 3638

什麼是異常處理

定義:異常處理就是我們在寫python時,經常看到的報錯資訊,例如;nameerror typeerror valueerror等,這些都是異常。

異常是乙個事件,改事件會在程式執行過程中發生,影響程式的正常執行,一般情況下,在python中無法處理程式時就會發生異常,異常時python的乙個物件,表示乙個錯誤,當python指令碼發生異常時,我們需要捕獲並處理異常,否則程式就會終止執行。

python 使用被稱為 異常 的特殊物件來管理程式執行期間發生的錯誤。每當發生讓 python 不知所措的錯誤時,它都會建立乙個異常物件。如果你編寫了處理該異常的**,程式將繼續執行;如果你未對異常進行處理,程式將停止,並顯示乙個 traceback ,其中包含有關異常的報告。異常是使用 try-except **塊處理的。 try-except **塊讓 python 執行指定的操作,同時告訴 python 發生異常時怎麼辦。使用了 try-except **塊時,即便出現異常,程式也將繼續執行:顯示你編寫的友好的錯誤訊息,而不是令使用者迷惑的 traceback 。

處理zerodivisionerror異常

下面來看一種導致 python 引發異常的簡單錯誤。你可能知道不能將乙個數字除以 0 ,但我們還是讓 python 這樣做吧:

print(5/0)

報錯:traceback (most recent call last):

file "test.py", line 2, in

print(5/0)

zerodivisionerror: integer division or modulo by zero

使用 try-except **塊

當你認為可能發生了錯誤時,可編寫乙個 try-except **塊來處理可能引發的異常。你讓 python 嘗試執行一些**,並告訴它如果這些**引發了指定的異常,該怎麼辦。

處理 zerodivisionerror 異常的 try-except **塊類似於下面這樣:

try:

print(5/0)

except zerodivisionerror:

print("you can't divide by zero!")

# you can't divide by zero!

如果 try-except **塊後面還有其他**,程式將接著執行,因為已經告訴了 python 如何處理這種錯誤。

使用異常避免崩潰

發生錯誤時,如果程式還有工作沒有完成,妥善地處理錯誤就尤其重要。這種情況經常會出現在要求使用者提供輸入的程式中;如果程式能夠妥善地處理無效輸入,就能再提示使用者提供有效輸入,而不至於崩潰。

建立乙個只執行除法運算的簡單計算器:

print("give me two numbers, and i'll divide them.")

print("enter 'q' to quit.")

while true:

first_number = input("\nfirst number: ")

if first_number == 'q':

break

second_number = input("second number: ")

try:

answer = int(first_number) / int(second_number)

except zerodivisionerror:

print("you cannjsruchj't divide by 0!")

else:

print(answer)

try-except-else **塊的工作原理大致如下:

python 嘗試執行 try **塊中的**;只有可能引發異常的**才需要放在 try 語句中。有時候,有一些僅在 try **塊成功執行時才需要執行的**;這些**應放在 else **塊中。 except **塊告訴 python ,如果它嘗試執行 try **塊中的**時引發了指定的異常,該怎麼辦。

通過**可能發生錯誤的**,可編寫健壯的程式,它們即便面臨無效資料或缺少資源,也能繼續執行,從而能夠抵禦無意的使用者錯誤和惡意的攻擊。

處理 filenotfounderror 異常

filenotfounderror 錯誤程式設計客棧是函式 open() 導致的,因此要處理這個錯誤,必須將 try 語句放在包含 open() 的**行之前:

filename = 'alice.txt'

try:

with open(filename) as f_obj:

contents = f_obj.read()

except filenotfounderror:

msg = "sorry, the file " + filename + " does not exist."

print(msg)

處理多個檔案

def count_words(filename):

""" 計算乙個檔案大致包含多少個單詞 """

try:

with open(filename) as f_obj:

contents = f_obj.read()

except filenotfounderror:

msg = "sorry, the file " + 程式設計客棧filename + " does not exist."

print(msg)

else:

# 計算檔案大致程式設計客棧包含多少個單詞

words = contents.split()

num_words = len(words)

print("the file " + filename + " has about " + str(num_words) + " words.")

filenames = ['a.txt', 'b.txt', 'c.txt', 'd.txt']

for filename in filenames:

count_words(filename)

異常時保持靜默

要讓程式在失敗時一聲不吭,可像通常那樣編寫 try **塊,但在 except **塊中明確地告訴 python 什麼都不要做。 python 有乙個 pass 語句,可在**塊中使用它來讓 python 什麼都不要做:

def count_words(filename):

""" 計算乙個檔案大致包含多少個單詞 """

try:

with open(filename) as f_obj:

contents = f_obj.read()

except filenotfounderror:

pass

本文標題: python的中異常處理機制

本文位址: /jiaoben/python/238506.html

python中的異常處理機制

try except 語句 接受異常 語法 try 可能觸發異常的語句塊 except 錯誤型別1 as 變數1 變數繫結的是異常物件 該錯誤對應的語句塊 except 錯誤型別2 as 變數2 該錯誤對應的語句塊 except 錯誤型別3,錯誤型別4 不同型別的異常對應相同的操作,錯誤型別儲存在乙...

Python 異常處理機制

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...

Python異常處理機制

部落格核心內容 1.常見的異常型別 2.異常處理機制 3.異常處理方法 4.try catch到底什麼時候用 一 python中常見的異常型別 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 imp...