Python異常學習筆記

2022-10-04 23:36:42 字數 1854 閱讀 5136

異常(exceptions)是python中一種非常重要的型別,它和語法錯誤不同,是在程式執行期間引發的錯誤。python中內建了很多異常,如ioerror,nameerror,keyboardinterrupt等,更多的異常可以點選這裡。

異常的意義在於提供一種更加優雅的執行方式,例如用python編寫乙個計算器,如果使用者輸入不能計算的物件,則可以丟擲異常,並進行處理, 如下:

while true:

try:

x= int(input('please in enter a number:'))

程式設計客棧 print "your input is %s"%x

break

except exception,e:

print e

python是一門物件導向的語言,異常本身也是物件, 用dir(exception)檢視exception類的屬性,如下:[『__class__', 『__delattr__', 『__dict__', 『_程式設計客棧_doc__', 『__format__', 『__getattribute__', 『__getitem__', 『__getslice__', 『__hash__', 『__init__', 『__new__', 『__reduce__', 『__reduce_ex__', 『__repr__', 程式設計客棧『__setattr__', 『__setstate__', 『__sizeof__','__str__', 『__subclasshook__', 『__unicode__', 『args', 『message'], 除開args和message外,其餘的均為其內部屬性, 其中args是傳遞給異常類的建構函式的乙個型別為元祖的引數, 一些內建函式,如ioerror需要它接收多個引數,其它的則直接是直接傳遞乙個錯誤提示字串。

python的異常可以通過try語句來檢查,任何在try語句塊裡的**都會被監測,檢查有無異常產生,except會根據輸入檢查異常的型別,並執行except內的**。那麼,這裡就不禁要問問,except後面的兩個引數到底是什麼?如果第乙個是錯誤的型別,那麼第二引數呢?對其進行檢測,發現它是屬於exc程式設計客棧eption的例項,也就是說,它是由異常類產生的乙個具體的異常物件。

那麼,使用者如果自定義乙個異常呢?python中規定,所有異常必須直接或者間接的繼承自exception類,如下,自定義的異常:

#!/usr/bin/env python

class myerror(exception):

def __init__(self,*args):

self.value=args[0]

def __str__(self):

return repr(self.value)

def showname(*args):

if args:

print args

else:

raise myerror('e程式設計客棧rror: need 1 arguments at last, 0 input')

把這個檔案儲存為showname.py,其它模組就可以引入呼叫showname函式,並對它執行的結果進行檢測:

#!/usr/bin/env python

import showname

try:

showname.showname()

except showname.myerror,e:

print e

值得注意的幾點是:1, python中用raise丟擲異常; 2, 由於所有異常都是繼承自exception,所以,當不確定異常型別的時候,可以在except後面直接接exception來捕獲所有異常;3,由於異常的繼承關係,異常內的所有屬性都是可以被重定義的,也可以在自定義的異常上增加屬性。

本文標題: python異常學習筆記

本文位址:

Python 異常 學習筆記

python 標準異常總結 try 和 try finally 語句 try 下面是檢測範圍,如發生異常停止在第乙個異常的位置 fh open testfile w fh.write 這是乙個測試檔案,用於測試異常 except oserror as reason 下面是出現異常後輸出的 print...

Python學習筆記 異常

1 異常概念 程式在執行是,如果python直譯器遇到乙個錯誤,會停止程式的執行,並且提示一些錯誤資訊,這就是異常 程式停止執行並且提示錯誤資訊這個動作,我們稱之為 丟擲 raise 異常 程式開發是,很難將所有的特殊情況都處理的面面俱到,通過一異常捕獲可以針對突發事件做集中的處理,從而保證程式的穩...

python學習筆記 異常

baseexception systemexit keyboardinterrupt generatorexit exception stopiteration standarderror buffererror arithmeticerror floatingpointerror overflow...