什麼是異常處理
定義:異常處理就是我們在寫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...