python 中的異常處理

2021-07-25 16:51:17 字數 2521 閱讀 4670

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯入exceptions模組即可使用異常。一旦引發而且沒有捕捉systemexit異常,程式執行就會終止。如果互動式會話遇到乙個未**捉的systemexit異常,會話就會終止。

1使用try和except語句來捕獲異常

try:

block

except [exception,[data…]]:

block

try:

block

except [exception,[data...]]:

block

else:

block

這種異常處理的語法規則如下:

例如:

try:

f = open(「file.txt」,」r」)

except ioerror, e:

print e

捕獲到的ioerror錯誤的詳細原因會被放置在物件e中,然後執行該異常的except**塊

try:

a=bb=c

except exception,ex:

print exception,":",ex

使用except子句需要注意的事情,就是多個except子句截獲異常時,如果各個異常類之間具有繼承關係,則子類應該寫在前面,否則父類將會直接截獲子類異常。放在後面的子類異常也就不會執行到了。

try:

block

finally:

block

該語句的執行規是:

第二種try語法在無論有沒有發生異常都要執行**的情況下是很有用的。例如我們在python中開啟乙個檔案進行讀寫操作,我在操作過程中不管是否出現異常,最終都是要把該檔案關閉的。

這兩種形式相互衝突,使用了一種就不允許使用另一種,而功能又各異。

補充:發生異常時,python能「記住」引發的異常以及程式的當前狀態。python還維護著traceback(跟蹤)物件,其中含有異常發生時與函式呼叫堆疊有關的資訊。記住,異常可能在一系列巢狀較深的函式呼叫中引發。程式呼叫每個函式時,python會在「函式呼叫堆疊」的起始處插入函式名。一旦異常被引發,python會搜尋乙個相應的異常處理程式。如果當前函式中沒有異常處理程式,當前函式會終止執行,python會搜尋當前函式的呼叫函式,並以此類推,直到發現匹配的異常處理程式,或者python抵達主程式為止。這一查詢合適的異常處理程式的過程就稱為「堆疊輾轉開解」(stack unwinding)。直譯器一方面維護著與放置堆疊中的函式有關的資訊,另一方面也維護著與已從堆疊中「輾轉開解」的函式有關的資訊。

格式:

try:

block

except:

traceback.print_exc()

示例:…excpetion/traceback.py

舉個例子

test1.py中,當分母為0的時候,呼叫系統退出

#!/usr/bin/python  

import sys

def division(a=1, b=1):

if b==0:

print 'b eq 0'

sys.exit(1)

else:

return a/b

test2.py中,用try..except捕獲異常,然後traceback.print_exc()列印。

#!/usr/bin/python  

import sys

import traceback

import test1

a=10

b=0

try:

print test1.division(a,b)

except:

print 'invoking division failed.'

traceback.print_exc()

sys.exit(1)

執行test2.py失敗丟擲異常。

$python test2.py

execution python-2.5.1/python (enodeb/

linux)

b eq 0

invoking division failed.

traceback (most recent call last):

file "test2.py", line 10, in

test1.division(a,b)

file "/home/fesu/test1.py", line 6, in division

sys.exit(1)

systemexit: 1

Python中的異常處理

當python檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的 異常 看如下示例 try print test1 open 123.txt r print test2 except ioerror pass此時可以正常執行,執行結果為 test1 說明 try exc...

python中的異常處理

python使用異常物件來表示異常狀態,並在遇到錯誤時引發異常,異常物件未被處理時,程式將終止並顯示一條錯誤資訊。raise語句 自定義異常類 class somecustomexception exception pass class myexceptionclass exception def ...

Python中的異常處理

目錄 異常處理 python中常見的異常 在python當中,若乙個程式在執行的時候出錯,python直譯器會自動的在出錯的地方生成乙個異常物件,而後python直譯器會自動的在出錯地方的附近尋找有沒有對這個異常物件處理的 所謂異常處理 就是 try except 語句。如果沒有,python直譯器...