python捕獲異常
1. python 如何獲取異常的名字
printe.__class__
2. Python with as為什麼無法捕獲異常
with在打開文件的這個操作中的作用是保證每次正常打開文件後,不論遇到什麼,最後都會執行文件的關閉操作,避免腳本中遺漏。但是他自身並沒有抓取異常的處理機制。
with open("asdasdas") as a:
print("打開成功")
do_something()
這段代碼的含義,相當於打開了文件「asdasdas」後列印了「打開成功」的字樣後,又處理了do_something()這段邏輯。不論do_something()這段邏輯正常執行結束,還是拋出異常,都會保證最終「asdasdas」這個文件都會被關閉。避免因為文件未被關閉而導致的種種問題。
你的代碼可以改為以下部分,這樣就可以catch到讀取文件中的異常了。
try:
with open("asdasdas") as a:
print("打開成功")
except:
print("打開失敗")
3. 一個簡單的Python程序,關於異常捕捉。
這個還沒進入你函數,就已經異常了
4. 怎樣在python中捕獲線程拋出的異常
python的線程中的異常,通常不會給你顯示出錯的語句。你可以將thread函數,或者是Thread的run里的內容用整個兒的try catch包裹起來。搜索
然後這樣
import traceback,sys
try:
threadfun1()
except:
traceback.print_exc(file=sys.stdout)
這樣出錯的時候就能定位到是哪一行代碼了。
因為線程經常出現這種無顯示錯誤位置的情形。後來都形成了習慣,要不把線程放在try catch里。要不就仔細檢查線程函數,確保它沒有錯誤,再放出去運行。
另外你還可以將線程函數的功能放在主進程里,單線程運行。這樣錯誤位置就曝露出來了。
僅僅從你這個提示來看是無法定位錯誤的位置與類型的。
5. Python 網頁打開異常捕獲
可以直接就寫個except,捕獲所有異常,也可以自己指定異常哇,比如常見的Timeout、IOError、HTTPError等等
6. Python 為什麼不能捕獲如下的除零異常
把try expect放在exe()函數裡面
如果在程序出錯的時候捕捉到這個錯誤,被用自己的方式來處理它,或者不想讓使用程序的用戶了解程序出錯的詳細信息,這個時候我們就需要捕捉異常,可以使用 try和except 語言。
>>> a = 10
>>> b = 0
>>> print a / b
>>>
這樣,程序運行之後會產生異常錯誤,信息如下:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <mole>
print a /b
ZeroDivisionError: integer division or molo by zero
如何處理上面的除零錯誤,並且返回自己想要的內容,請看下面的代碼:
try:
a = 10
b = 0
print a / b
except ZeroDivisionError:
pirnt 「除零錯誤,已經捕獲!」
如果需要同時捕捉多個可能的異常錯誤,可以把異常的類型,放入一個元組中,舉例說明:
except (ZeroDivisionError, TypeError, NameError)
7. python異常值處理
如果你用 Python 編程,那麼你就無法避開異常,因為異常在這門語言里無處不在。打個比方,當你在腳本執行時按 ctrl+c 退出,解釋器就會產生一個 KeyboardInterrupt 異常。而 KeyError、ValueError、TypeError 等更是日常編程里隨處可見的老朋友。
異常處理工作由「捕獲」和「拋出」兩部分組成。「捕獲」指的是使用 try ... except 包裹特定語句,妥當的完成錯誤流程處理。而恰當的使用 raise 主動「拋出」異常,更是優雅代碼里必不可少的組成部分。
異常分類
BaseException所有異常的基類
Exception常見錯誤的基類
ArithmeticError所有數值計算錯誤的基類
Warning警告的基類
AssertError斷言語句(assert)失敗
AttributeError嘗試訪問未知的對象屬性
DeprecattionWarning關於被棄用的特徵的警告
EOFError用戶輸入文件末尾標志EOF(Ctrl+d)
FloattingPointError浮點計算錯誤
FutureWarning關於構造將來語義會有改變的警告
GeneratorExitgenerator.close()方法被調用的時候
ImportError導入模塊失敗的時候
IndexError索引超出序列的范圍
KeyError字典中查找一個不存在的關鍵字
KeyboardInterrupt用戶輸入中斷鍵(Ctrl+c)
MemoryError內存溢出(可通過刪除對象釋放內存)
NamerError嘗試訪問一個不存在的變數
NotImplementedError尚未實現的方法
OSError操作系統產生的異常(例如打開一個不存在的文件)
OverflowError數值運算超出最大限制
OverflowWarning舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning關於特徵會被遺棄的警告
ReferenceError弱引用(weakreference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError一般的運行時錯誤
RuntimeWarning可疑的運行行為(runtimebehavior)的警告
StopIteration迭代器沒有更多的值
SyntaxErrorPython的語法錯誤
SyntaxWarning可疑的語法的警告
IndentationError縮進錯誤
TabErrorTab和空格混合使用
SystemErrorPython編譯器系統錯誤
SystemExitPython編譯器進程被關閉
TypeError不同類型間的無效操作
UnboundLocalError訪問一個未初始化的本地變數(NameError的子類)
UnicodeErrorUnicode相關的錯誤(ValueError的子類)
UnicodeEncodeErrorUnicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeErrorUnicode解碼時的錯誤(UnicodeError的子類)
UserWarning用戶代碼生成的警告
ValueError傳入無效的參數
ZeroDivisionError除數為零
8. python如何捕獲錯誤信息
首先我們聲明一個字元串,然後構建下表獲取字元串中的字元,
然後我們經常會用一個越界的下表進行訪問,就會報如下的錯誤:
相關推薦:《Python教程》
如果我們想捕獲這個錯誤,並且加入我們自己的提示信息的話,可以用try與catch進行,
另外except中也可以精確的指定某一個異常類型,如下圖所示,指定了除數為0的異常。
如果想輸出異常提示信息的話,直接在except里進行輸出即可,
最後提醒一下的是,try與except語句中也可以運用else語句的,
綜上所述,python中進行異常的捕獲運用try與except語句即可,異常信息的顯示也可以自己進行定製。
9. python怎麼捕獲2次異常
try:
something
except:
try:
something
except:
something
10. Python為什麼捕獲不到異常,程序總是自動終止
timeout 是run time error,你試試用Error,是可以捕獲的。