導航:首頁 > 編程語言 > python完整異常機制

python完整異常機制

發布時間:2023-09-02 06:50:58

A. 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除數為零

B. 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語句捕獲所有發生的異常。但這不是一個很好的方式,我們不能通過該程序識別出具體的異常信息。因為它捕獲所有的異常。

C. 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:
其餘代碼

D. Python入門精華-異常處理及其中的finally關鍵字的理解(超詳細)

在python中會遇到兩種錯誤,一種,是==語法錯誤==,這種錯誤不能被解釋器容忍,必須更改為正確語法後程序才能運行;而另外一種,是在==程序運行過程中出現的錯誤==,諸如==NameError==,==TypeError==等此類錯誤,有錯誤名稱和行號以及報錯內容的錯誤,稱之為==異常==。

名詞解釋:

[]:方括弧內的內容不必一定出現

try:異常捕獲塊,有且僅有一個

except:異常處理塊,可以有多個,且每個可以同時處理多種異常;不必一定存在

else:在未捕獲到異常時,進入else;else可可選的,不必一定存在

finaly:不論try有沒有捕獲到異常都會進入的塊,這里很多同學沒有深刻體會到它的用途,只是單純認為,此關鍵字不是必須的,沒有那麼重要,這個是討論的一點,幫助各位童鞋理解加深印象。

as:為各種異常進行一個起別名額功能。

1、首先執行try中的代碼塊(error_statement),如果代碼執行過程中出現異常,python會立刻生成一個對應的異常對象,並且將該異常上報解釋器,由解釋器獲得異常的過程,稱之為==異常捕獲==。

2、如果==捕獲到異常==,會立刻進入異常處理流程(==此時在try中異常出現以後的代碼不會再運行==),即except關鍵字引導的塊,根據關鍵字後邊的ExceptionName來==自上而下由左及右==地逐個檢查是否有對應的異常名稱,如果有則進入對應的except模塊,執行==其中的do_Excepttion_statement代碼塊==;如果沒有檢測到匹配的異常名稱則==不會進入任何except塊==,代碼會繼續向下運行。

3、else流程:在try中未檢測到任何異常才會進入else,童鞋們可能會有疑問?是沒有檢測到異常,還是except沒有包含該異常?注意~~這是兩個概念,前者是沒有異常,後者是有異常但是沒有進行except處理。答案是,沒有檢測到任何異常(代碼完全OK)才會進入else。示例如下:

4、except流程:

此處主要強調在最上邊例子中的except[(ExceptionName1,ExceptionName2 ...) [as ...]]:的理解,『[ ]』上邊提到過,是代表可以沒有;那麼,童鞋寫了如下代碼,看看兩種代碼的結果是否相同呢?

首先,需要搞清楚,代碼二是有語法錯誤的,這個必須得改正,問題在於else不能和try搭配,只能和except;第二點,這個是重點,只寫except和什麼都不寫之間有沒有區別?答案是肯定的,什麼都不寫代表不進行處理,而只寫 except :』 相當於 ==『except Exception:』,這種寫法意思是說萬能異常處理,即Exception這種異常是所有異常的統稱,所以如上的代碼一是勢必會列印『name is error』這句話。

5、finally流程(重點) :童鞋們往往在有些時候比較難理解finally的存在的意義,但是對於這樣的流程,大家卻都知道無論try是否捕獲到異常,都會進入finally流程』;那麼接下來,我們細細品一品這個sao氣外漏的fianlly究竟為何如此之sao。

5.1 fianlly: 其實這玩意有個冠冕堂皇的功能:垃圾處理機制,說白了,如果你打開了一些物理文件,最終,是需要finally來進行關閉的(有同學就說了,那不寫在finally里邊不行嗎,也可以。)

5.2究竟如何理解?示例如下:

5.3 總結:

當 try 塊中代碼發生異常,導致程序崩潰時,在崩潰前 Python 解釋器也會執行 finally 塊中的代碼

E. BP神經網路的原理的BP什麼意思

原文鏈接:http://tecdat.cn/?p=19936

在本教程中,您將學習如何在R語言中創建神經網路模型。

神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。

該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。

本教程將涵蓋以下主題:

閱讀全文

與python完整異常機制相關的資料

熱點內容
命令與征服叛逆者修改器 瀏覽:242
怎麼用ios玩安卓全民槍戰 瀏覽:666
程序員入行前後的頭發 瀏覽:709
嵌入式圖像演算法 瀏覽:327
伺服器如何訪問伺服器失敗 瀏覽:873
android進度球 瀏覽:999
Linux造成xfs文件夾 瀏覽:455
華為手機怎麼修改wifi加密類型 瀏覽:248
伺服器封口是什麼意思 瀏覽:741
有限元分析是演算法嗎 瀏覽:901
空氣壓縮機性能曲線 瀏覽:20
京城程序員2019 瀏覽:403
android新系統 瀏覽:510
安卓80有什麼bug 瀏覽:678
如何做單機伺服器 瀏覽:943
校訊通查成績怎麼顯示伺服器異常 瀏覽:882
冰箱壓縮機工作壓力是多少 瀏覽:408
程序員20多平米租房 瀏覽:451
電工知識用線的演算法 瀏覽:338
極光推送php伺服器端 瀏覽:5