Python 異常處理機制

2021-06-25 21:34:29 字數 2629 閱讀 6313

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 ...

我們還可以對異常進行多次捕捉

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])

如果try中的前兩行都沒有丟擲異常,第三行則會丟擲異常,但是在**中我並沒有指定異常型別進行捕捉,程式會執行最後乙個except塊

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不管怎樣都會...