python學習筆記異常處理(七)

2021-09-20 17:42:16 字數 1915 閱讀 7808

異常處理是工作中編寫**必須要完成的內容,對於不符合預期的操作,程式總會出現異常情況,而對異常情況能夠妥善處理,是保證程式穩定性的關鍵。

>>> f = input("filename")

filename/hone/a.py

>>> ff = open(f)

traceback (most recent call last):

file "", line 1, in

filenotfounderror: [errno 2] no such file or

directory:

'/hone/a.py'

以上**,使用者輸入的檔案不存,系統丟擲檔案不存在的異常,型別是filenotfounderror。

python異常型別有很多,常見的型別如下:

異常處理

如果出現了異常,我們不可以直接將異常拋給使用者,應該使用python的異常處理方法來捕獲並處理異常,處理方法為try,except,finally三個關鍵字。

try:

有可能丟擲異常的**

except 異常型別名稱:

處理**

except 異常型別名稱:

處理**

except可以有多個,每個處理不同型別的異常,也可以不寫任何異常型別名稱,則會處理所有捕獲的異常。

以上**使用異常處理改進:

>>> filename = input('filename')

filename/home/a.py

>>>

try:

... f = open(filename)

... print(f.read)

... f.close()

...

except filenotfounderror:

... print('file not found')

...

file not found

finally關鍵字是用來進行清理工作,經常和except一起使用,即無論是正常還是異常,finally塊裡面的**都會執行。

如果乙個檔案處理的程式中異常出現在 f.write() 向檔案中寫入資料的時候,就無法執行 close 操作,使用 finally 可以保證無論 try **塊中的**是否丟擲異常,都能夠執行 finally **塊裡的內容,保證檔案被正常關閉。

修改上述的程式如下,改為寫入操作,引入 finally 保證檔案可以被正常關閉:

filename = '/etc/protocols'

f = open(filename)

try:

f.write('shiyanlou')

except:

print("file write error")

finally:

print("finally")

f.close()

程式執行的結果:

file write error

finally

表示雖然異常,但仍然執行到了 finally **塊。

這裡需要說明下丟擲異常的原因是以唯讀的模式開啟了乙個檔案,但嘗試向檔案中寫入內容,所以會丟擲異常。另外 except: 這個語句後不寫任何引數,表示將處理所有 try **塊中丟擲的異常。

丟擲異常

如果我們希望在程式執行過程中丟擲一些異常,該如何操作呢?可以使用 raise 語句。

raise 異常名稱

例如,我們在**裡希望丟擲乙個 valueerror,直接使用:

raise valueerror()

外部的**就可以使用 except valueerror 進行捕獲和處理了。

Python學習筆記(七) 異常處理

異常處理部分,只是很粗略的看了一遍。著重記錄try except塊,和if else類似,不過try是異常控制的,一旦發生異常,跳過其他未執行的語句,直接執行except塊中的內容。知道捕獲多種異常的方法,分別處理不同異常的方法,捕獲所有異常的方法。finally語句 無論程式是否發生異常,fina...

Python學習筆記 七 異常處理

這篇文章將會介紹 python 中異常及其處理方法 異常是一種非正常狀態,它表示程式在執行過程中發生錯誤 在實際情況中,可能會有多種原因導致程式出現異常狀態,而每種異常狀態都會由乙個異常物件表示 當程式出現異常狀態時,會丟擲乙個異常物件,如果該物件未 獲和處理,程式將會中止 在一般情況下,程式設計師...

python學習筆記 七 異常

3.自定義異常 4.警告 在實際開發中,往往不會出現乙個系統編寫下來,沒有出現任何乙個bug。為處理這種會出現錯誤的地方,如除數為零的除法,python提供了非常強大的機制 異常處理機制。python使用異常物件來表示程式異常狀態,並在遇到錯誤時引發異常。異常物件未被處理 或捕獲 是,程式將終止執行...