python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯入exceptions模組即可使用異常。一旦引發而且沒有捕捉systemexit異常,程式執行就會終止。如果互動式會話遇到乙個未**捉的systemexit異常,會話就會終止。
python 異常處理方式一:try-except
我們試圖開啟乙個不存在的檔案aa.txt
open('aa.txt')
程式會traceback,終止執行
traceback (most recent call last):
file "", line 1, in
f = open('aa.txt')
filenotfounderror: [errno 2] no such file or directory: 'aa.txt'
我們會用try-except塊來包含可能會丟擲異常的**段,進行異常捕捉處理
try:
f = open('aa.txt')
except filenotfounderror as e:
print('檔案不存在')
執行結果:except塊中的**會被執行
檔案不存在
finally塊: 如果try塊中的**捕捉到異常,程式會跳轉到except塊中,try塊中剩餘的**遍不在執行。如果沒有捕捉到異常,try塊中的**可以完全執行。finally塊中的**,無論有沒有捕捉到異常都會被執行
結果一:if __name__ == '__main__':
try:
open('aa.txt')
except filenotfounderror as e:
print("檔案不存在")
finally:
print('finally ...')
檔案不存在
finally ...
結果二:
finally ...
try-except-else模組
if __name__ == '__main__':
try:
open('test.txt')
except filenotfounderror as e:
print("檔案不存在")
else:
print("檔案存在")
finally:
print('finally ...')
如果try中沒有捕捉到異常,會執行else塊中的**。
結果一:
檔案存在
finally ...
結果二:
檔案不存在
finally ...
我們還可以對異常進行多次捕捉
如果try中的前兩行都沒有丟擲異常,第三行則會丟擲異常,但是在**中我並沒有指定異常型別進行捕捉,程式會執行最後乙個except塊import sys
if __name__ == '__main__':
lst = [0,1]
hello = 'aa'
try:
open('test.txt')
print(hello) ##變數hello沒有定義,會丟擲nameerror
print(lst[2])##index out of range,丟擲indexerror
except filenotfounderror as e:
print("檔案不存在")
except nameerror as e:
print(e)
#except indexerror as e:
# print(e)
except:
print("unexpected error:", sys.exc_info()[0])
aaunexpected error:
python 異常處理方式二:raise
在乙個函式中,我們可能想要丟擲乙個異常,而不是在這個函式中進行處理
結果一:def raise_ex(args):
if args == 'err':
raise nameerror('invalid name is %s' % args)
else:
print('name: %s' % args)
if __name__ == '__main__':
name = input('請輸入name:')
try:
f = raise_ex(name)
except nameerror as e:
print('函式raise_ex丟擲異常: %s' % e)
請輸入name:aa
name: aa
結果二:
請輸入name:err
函式raise_ex丟擲異常: invalid name is err
Python異常處理機制
部落格核心內容 1.常見的異常型別 2.異常處理機制 3.異常處理方法 4.try catch到底什麼時候用 一 python中常見的異常型別 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 imp...
Python異常處理機制
在構建乙個魯棒性較強的python專案時,合適的異常處理機制,是相當重要的。本文主要介紹python異常處理機制的基本概念和常用的異常處理方法。在python中使用異常物件來表示異常狀態,並在遇到錯誤時引發異常。異常物件未被處理 或捕獲 時,程式將終止並顯示一條錯誤訊息 traceback 常見的內...
Python異常處理機制
1,try.except.eg1 a,b 1,0 try a bexcept print error print end output error end解析 try測試裡邊的 是否有錯,若有錯執行except語句,然後執行最後一行print語句,就是說python的try,except不管怎樣都會...