⑴ python中的異常類的認識理解
9.8. 異常也是類
用戶自定義異常也可以是類。利用這個機制可以創建可擴展的異常體系。
以下是兩種新的,有效的(語義上的)異常拋出形式,使用 raise 語句:
raise Class
raise Instance
第一種形式中,Class 必須是 type 或其派生類的一個實例。第二種形式是以下形式的簡寫:
raise Class()
發生的異常其類型如果是 except 子句中列出的類,或者是其派生類,那麼它們就是相符的(反過來說--發生的異常其類型如果是異常子句中列出的類的基類,它們就不相符)。例如,以下代碼會按順序列印 B,C,D:
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
try:
raise cls()
except D:
print("D")
except C:
print("C")
except B:
print("B")
要注意的是如果異常子句的順序顛倒過來( execpt B 在最前),它就會列印 B,B,B--第一個匹配的異常被觸發。
列印一個異常類的錯誤信息時,先列印類名,然後是一個空格、一個冒號,然後使用內置函數 str() 將類轉換得到的完整字元串。
⑵ Python,有誰知道這個Exception是代表的什麼意思,是說ShortInputException類繼承Exception這個類嗎
Exception是異常類啊,代碼中ShortInputException類繼承了Exception
⑶ python出現這個錯誤是什麼原因
搜集了一些python最重要的內建異常類名,並做了簡單的介紹:
AttributeError:屬性錯誤,特性引用和賦值失敗時會引發屬性錯誤
NameError:試圖訪問的變數名不存在
SyntaxError:語法錯誤,代碼形式錯誤
Exception:所有異常的基類,因為所有python異常類都是基類Exception的其中一員,異常都是從基類Exception繼承的,並且都在exceptions模塊中定義。
IOError:一般常見於打開不存在文件時會引發IOError錯誤,也可以解理為輸出輸入錯誤
KeyError:使用了映射中不存在的關鍵字(鍵)時引發的關鍵字錯誤
IndexError:索引錯誤,使用的索引不存在,常索引超出序列范圍,什麼是索引
TypeError:類型錯誤,內建操作或是函數應於在了錯誤類型的對象時會引發類型錯誤
ZeroDivisonError:除數為0,在用除法操作時,第二個參數為0時引發了該錯誤
ValueError:值錯誤,傳給對象的參數類型不正確,像是給int()函數傳入了字元串數據類型的參數
⑷ 如何查找一個exception的父類 python
Python的異常處理能力是很強大的,可向用戶准確反饋出錯信息。
在Python中,異常也是對象,可對它進行操作。
所有異常都是基類Exception的成員。所有異常都從基類Exception繼承,而且都在exceptions模塊中定義。Python自動將所有異常名稱放在內建命名空間中,所以程序不必導入exceptions模塊即可使用異常。
一旦引發而且沒有捕捉SystemExit異常,程序執行就會終止。如果互動式會話遇到一個未被捕捉的SystemExit異常,會話就會終止。
⑸ python exception: no description如何解決
看你的錯誤提示,應該是讀不到文件,在你載入圖片那邊加個r看看,也就是self.image=pygame.image.load(r'J:\fighter.jpg')
這個r的作用表示原生字元,不進行轉義的意思
⑹ python log exception會列印堆棧么
不會,用import traceback
importtraceback
try:
a=3
b=a+{"1":3}
exceptExceptionase:
print'可以把一下信息寫入日誌'
#如log().info(traceback.print_exc(e))
traceback.print_exc(e)
⑺ python exception 是什麼對象
所說所有的變數都是對象。 對象在python里,其實是一個指針,指向一個數據結構,數據結構里有屬性,有方法。
對象通常就是指變數。從面向對象OO的概念來講,對象是類的一個實例。在python里很簡單,對象就是變數。
class A:
myname="class a"
上面就是一個類。不是對象
a=A()
這里變數a就是一個對象。
它有一個屬性(類屬性),myname,你可以顯示出來
print a.myname
所以,你看到一個變數後面跟點一個小數點。那麼小數點後面就是它的屬性或者是方法。帶括弧的方法。不帶就是屬性。
⑻ python3 中的try... except Exception,e: ...怎麼不能用了變成什麼了呢
語法錯誤,應該改成下列語法:
python3 中捕捉異常需要使用try/except語句,具體格式如下:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:<語句> #如果沒有異常發生
編輯如下:
「拓展資料「:
try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。
如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。
⑼ python拋出異常如何操作
8.4. 拋出異常
raise 語句允許程序員強制拋出一個指定的異常。例如:
>>> raise NameError('HiThere')
Traceback (most recent call last):
File "
", line 1, in ?
NameError: HiThere
要拋出的異常由 raise 的唯一參數標識。它必需是一個異常實例或異常類(繼承自 Exception 的類)。
如果你需要明確一個異常是否拋出,但不想處理它,raise 語句可以讓你很簡單的重新拋出該異常:
>>> try:
... raise NameError('HiThere')
... except NameError:
... print('An exception flew by!')
... raise
...
An exception flew by!
Traceback (most recent call last):
File "
", line 2, in ?
NameError: HiThere