A. python如何捕獲錯誤信息
首先我們聲明一個字元串,然後構建下表獲取字元串中的字元,
然後我們經常會用一個越界的下表進行訪問,就會報如下的錯誤:
相關推薦:《Python教程》
如果我們想捕獲這個錯誤,並且加入我們自己的提示信息的話,可以用try與catch進行,
另外except中也可以精確的指定某一個異常類型,如下圖所示,指定了除數為0的異常。
如果想輸出異常提示信息的話,直接在except里進行輸出即可,
最後提醒一下的是,try與except語句中也可以運用else語句的,
綜上所述,python中進行異常的捕獲運用try與except語句即可,異常信息的顯示也可以自己進行定製。
B. python里如何提取日誌中的錯誤信息
只要進行提取日誌中的錯誤信息,那麼你可以編輯一段程序,然後這樣的話才能夠完成達到提取的。
C. 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除數為零
D. Python中程序異常都能被處理嗎
「異常」是Python對象,表示一個錯誤。
如果不想出現異常後程序自動停止運行,編程的人,就要主動捕捉異常,並自己作出相應處理。
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。
下面是try/except的示例,說明了怎樣處理各種異常:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
Python的各種標准異常是預先定義好的。基本上包括了常見的異常情況,主要有以下內容。
異常名稱 描述
BaseException 所有異常的基類
SystemExit 解釋器請求退出
KeyboardInterrupt 用戶中斷執行(通常是輸入^C)
Exception 常規錯誤的基類
StopIteration 迭代器沒有更多的值
GeneratorExit 生成器(generator)發生異常來通知退出
StandardError 所有的內建標准異常的基類
ArithmeticError 所有數值計算錯誤的基類
FloatingPointError 浮點計算錯誤
OverflowError 數值運算超出最大限制
ZeroDivisionError 除(或取模)零 (所有數據類型)
AssertionError 斷言語句失敗
AttributeError 對象沒有這個屬性
EOFError 沒有內建輸入,到達EOF 標記
EnvironmentError 操作系統錯誤的基類
IOError 輸入/輸出操作失敗
OSError 操作系統錯誤
WindowsError 系統調用失敗
ImportError 導入模塊/對象失敗
LookupError 無效數據查詢的基類
IndexError 序列中沒有此索引(index)
KeyError 映射中沒有這個鍵
MemoryError 內存溢出錯誤(對於Python 解釋器不是致命的)
NameError 未聲明/初始化對象 (沒有屬性)
UnboundLocalError 訪問未初始化的本地變數
ReferenceError 弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError 一般的運行時錯誤
NotImplementedError 尚未實現的方法
SyntaxError Python 語法錯誤
IndentationError 縮進錯誤
TabError Tab 和空格混用
SystemError 一般的解釋器系統錯誤
TypeError 對類型無效的操作
ValueError 傳入無效的參數
UnicodeError Unicode 相關的錯誤
UnicodeDecodeError Unicode 解碼時的錯誤
UnicodeEncodeError Unicode 編碼時錯誤
UnicodeTranslateError Unicode 轉換時錯誤
Warning 警告的基類
DeprecationWarning 關於被棄用的特徵的警告
FutureWarning 關於構造將來語義會有改變的警告
OverflowWarning 舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning 關於特性將會被廢棄的警告
RuntimeWarning 可疑的運行時行為(runtime behavior)的警告
SyntaxWarning 可疑的語法的警告
UserWarning 用戶代碼生成的警告
Python系統處理異常就是提示一下,停止運行。不想停止,只有自己處理。
可以不帶類型,所有異常執行同一組語句:
try:
正常的操作
except:
發生異常,執行這塊代碼
else:
如果沒有異常執行這塊代碼
也可以多個異常共用一段代碼:
ry:
正常的操作
except(Exception1[, Exception2[,...ExceptionN]]]):
發生以上多個異常中的一個,執行這塊代碼
else:
如果沒有異常執行這塊代碼
還有一種格式,可以有finally部分:
try:
fh = open("testfile", "w")
try:
fh.write("這是一個測試文件,用於測試異常!!")
finally:
print "關閉文件"
fh.close()except IOError:
print "Error: 沒有找到文件或讀取文件失敗"
當在try塊中拋出一個異常,立即執行finally塊代碼。
finally塊中的所有語句執行後,異常被再次觸發,並執行except塊代碼。
參數的內容不同於異常。
除了標准異常,我們也可以自己定義異常,並進行處理,這時用到raise語句:
raise [Exception [, args [, traceback]]]
語句中 Exception 是異常的類型(例如,NameError)參數標准異常中任一種,args 是自已提供的異常參數。
最後一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。
相應的異常處理程序示例如下:
try:
正常語句,內含raise語句
except Exception,err:
觸發自定義異常
else:
其餘代碼
E. 怎樣在python中捕獲線程拋出的異常
python的線程中的異常,通常不會給你顯示出錯的語句。你可以將thread函數,或者是Thread的run里的內容用整個兒的try catch包裹起來。搜索
然後這樣
import traceback,sys
try:
threadfun1()
except:
traceback.print_exc(file=sys.stdout)
這樣出錯的時候就能定位到是哪一行代碼了。
因為線程經常出現這種無顯示錯誤位置的情形。後來都形成了習慣,要不把線程放在try catch里。要不就仔細檢查線程函數,確保它沒有錯誤,再放出去運行。
另外你還可以將線程函數的功能放在主進程里,單線程運行。這樣錯誤位置就曝露出來了。
僅僅從你這個提示來看是無法定位錯誤的位置與類型的。
F. 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("打開失敗")
G. Python3 使用flask 怎麼捕獲異常,返回自定義消息呢。比如連接mysql錯誤,我直接給出個友好提示
flask我不知道,但是try可以處理所有異常,而且可以自定義輸出的錯誤內容
try:
print(a)
exceptExceptionase:
print('error:{}'.format(e))
運行結果:
H. 請教python程序如何獲得控制台中的異常信息
try
except
#用這個來抓取異常