python列印異常
1. python 怎麼列印異常
try:
#你認為會出異常的代碼
exceptException,e:
#異常的堆棧信息
printe
#如果需要拋出異常
raisee
2. python try語句怎麼列印異常行
你在except裡面用except Exception as e 接受異常,然後把這個e列印出來看
3. 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() 將類轉換得到的完整字元串。
4. Python異常處理知識點匯總,五分鍾就能學會
什麼是異常?
1.錯誤
從軟體方面來說,錯誤是語法或是邏輯上的。錯誤是語法或是邏輯上的。
語法錯誤指示軟體的結構上有錯誤,導致不能被解釋器解釋或編譯器無法編譯。這些些錯誤必須在程序執行前糾正。
當程序的語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤可能是由於不完整或是不合法的輸入所致;
在其它情況下,還可能是邏輯無法生成、計算、或是輸出結果需要的過程無法執行。這些錯誤通常分別被稱為域錯誤和范圍錯誤。
當python檢測到一個錯誤時,python解釋器就會指出當前流已經無法繼續執行下去。這時候就出現了異常。
2.異常
對異常的最好描述是:它是因為程序出現了錯誤而在正常控制流以外採取的行為。
這個行為又分為兩個階段:首先是引起異常發生的錯誤,然後是檢測(和採取可能的措施)階段。
第一階段是在發生了一個異常條件(有時候也叫做例外的條件)後發生的。
只要檢測到錯誤並且意識到異常條件,解釋器就會發生一個異常。引發也可以叫做觸發,拋出或者生成。解釋器通過它通知當前控制流有錯誤發生。
python也允許程序員自己引發異常。無論是python解釋器還是程序員引發的,異常就是錯誤發生的信號。
當前流將被打斷,用來處理這個錯誤並採取相應的操作。這就是第二階段。
對於異常的處理發生在第二階段,異常引發後,可以調用很多不同的操作。
可以是忽略錯誤(記錄錯誤但不採取任何措施,採取補救措施後終止程序。)或是減輕問題的影響後設法繼續執行程序。
所有的這些操作都代表一種繼續,或是控制的分支。關鍵是程序員在錯誤發生時可以指示程序如何執行。
python用異常對象(exception object)來表示異常。遇到錯誤後,會引發異常。
如果異常對象並未被處理或捕捉,程序就會用所謂的回溯(traceback)終止執行
異常處理
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。
如果你不想在異常發生時結束你的程序,只需在try里捕獲它。
語法:
以下為簡單的try....except...else的語法:
Try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。
如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。
使用except而不帶任何異常類型
可以不帶任何異常類型使用except,如下實例:
以上方式try-except語句捕獲所有發生的異常。但這不是一個很好的方式,我們不能通過該程序識別出具體的異常信息。因為它捕獲所有的異常。
5. 小白求python 為啥列印不出來
你用raw_input要自己輸入,但是你按了CTRL+C,自然會拋出個異常。
6. python3.5怎麼輸出異常的信息
try:
...
except Exception as e:
...
7. python中異常處理的使用方法
8.3. 異常處理
通過編程處理選擇的異常是可行的。看一下下面的例子:它會一直要求用戶輸入,直到輸入一個合法的整數為止,但允許用戶中斷這個程序(使用 Control-C 或系統支持的任何方法)。注意:用戶產生的中斷會引發一個 KeyboardInterrupt 異常。
>>> while True:
... try:
... x = int(input("Please enter a number: "))
... break
... except ValueError:
... print("Oops! That was no valid number. Try again...")
...
try 語句按如下方式工作。
首先,執行 try 子句 (在 try 和 except 關鍵字之間的部分)。
如果沒有異常發生, except 子句 在 try 語句執行完畢後就被忽略了。
如果在 try 子句執行過程中發生了異常,那麼該子句其餘的部分就會被忽略。
如果異常匹配於 except 關鍵字後面指定的異常類型,就執行對應的except子句。然後繼續執行 try 語句之後的代碼。
如果發生了一個異常,在 except 子句中沒有與之匹配的分支,它就會傳遞到上一級 try 語句中。
如果最終仍找不到對應的處理語句,它就成為一個 未處理異常,終止程序運行,顯示提示信息。
一個 try 語句可能包含多個 except 子句,分別指定處理不同的異常。至多隻會有一個分支被執行。異常處理程序只會處理對應的 try 子句中發生的異常,在同一個 try 語句中,其他子句中發生的異常則不做處理。一個 except 子句可以在括弧中列出多個異常的名字,例如:
... except (RuntimeError, TypeError, NameError):
... pass
最後一個 except 子句可以省略異常名稱,以作為通配符使用。你需要慎用此法,因為它會輕易隱藏一個實際的程序錯誤!可以使用這種方法列印一條錯誤信息,然後重新拋出異常(允許調用者處理這個異常):
8. python raise觸發異常為什麼沒有列印錯誤
題主你好,
先說結果吧: 題主的代碼沒有問題, StopIteration異常也被拋出了.
下面說一下for循環從迭代器取值的邏輯題主應該就明白了:
正常情況下, for從迭代器中取值時, 在將迭代器中的元素消耗盡了以後, 迭代器都會拋出一個StopIteration異常給for語句, for語句檢測到StopIteration異常後就知道迭代器不會再返回內容了, 也就將for循環給結束掉了, 也就是說StopIteration是被for循環內部消耗掉了, 你可以這樣理解:
上面代碼的執行過程是這樣的:
將[1,2,3]中的1賦給x,輸出1;
將[1,2,3]中的2賦給x,輸出2;
將[1,2,3]國的3賦給x,輸出3;
拋出StopIteration異常, for檢測到StopIteration異常,結束for循環;
-------------
明白了上面的邏輯後, 題主也可以驗證一下, 題主可以將if語句給注釋掉, 然後執行一下, 看看輸出結果.
希望可以幫到題主, 歡迎追問.
有錯誤也請指出, 謝謝!
9. 在使用python(2.6.1)在輸出如下代碼時,出現了異常現象(輸出顯示的數據不正確),經多次測試都不得其原因
裡面有一個\r(000D)符,回車了,攪亂了字元。把000D換成000A就行了
10. python初學者Traceback (most recent call last):
1、打開Python開發工具IDLE,新建『myexcept.py』文件,並寫代碼如下:
classmyException(Exception):
def__init__(self,error):
self.error=error
def__str__(self,*args,**kwargs):
returnself.error
這就是自定義定義的異常類,繼承自Exception父類,有error欄位,__str__函數的作用是列印對象時候,顯示的字元串。