12 異常處理

2021-09-28 15:10:50 字數 2378 閱讀 1839

1.什麼是異常

異常就是程式執行時發生錯誤的訊號(在程式出現錯誤時,則會產生乙個異常,若程式沒有處理它,則會丟擲該異常,程式的執行也隨之終止)

異常通常分為兩類,語法錯誤和邏輯錯誤,語法錯誤指的無法通過編譯器,而邏輯錯誤指的是無法按照邏輯實現自己預想的結果

2.常見異常種類

ttributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

3.異常處理 try…except…詳細用法

1.異常類只能用來處理指定的異常情況,如果非指定異常則無法處理

s1 =

'hello'

try:

int(s1)

except indexerror as e:

# 未捕獲到異常,程式直接報錯

print e

2.多分支

s1 =

'hello'

try:

int(s1)

except indexerror as e:

print

(e)except keyerror as e:

print

(e)except valueerror as e:

print

(e)

3.萬能異常exception

s1 =

'hello'

try:

int(s1)

except exception as e:

print

(e)

4.也可以在多分支後來乙個exception

5.異常的其他機構

s1 =

'hello'

try:

int(s1)

except indexerror as e:

print

(e)except keyerror as e:

print

(e)except valueerror as e:

print

(e)else

:print

('try內**塊沒有異常則執行我'

)finally

:print

('無論異常與否,都會執行該模組,通常是進行清理工作'

)

6.主動觸發異常

try

:raise typeerror(

'型別錯誤'

)except exception as e:

print

(e)

7.斷言:assert 條件

如果需要確保程式中的某個條件一定為真才能讓程式正常工作的話,assert語句就有用公里。它可以在在程式中置入檢查點。條件後可以新增字串,用來解釋斷言。

>>

> age =-1

>>

>

assert

0120,

'the age must be realistic'

traceback (most recent call last)

: file ""

, line 1,in

assert

0120,

'the age must be realistic'

assertionerror: the age must be realistic

>>

>

8.總結try…except

1:把錯誤處理和真正的工作分開來

2:**更易組織,更清晰,複雜的工作任務更容易實現;

3:毫無疑問,更安全了,不至於由於一些小的疏忽而使程式意外崩潰了;

python筆記12 異常處理

什麼時候用異常處理 不得不用時,無法知道 會丟擲何種異常,進行異常判定時是無效多餘的 怎麼用 知道可能會出現的指定問題,加上自己的日誌 異常處理的基本語句 try 寫出可能會丟擲異常的 塊 except 丟擲異常時,該執行的內容 else try沒有丟擲異常時,執行的 finally 總是會執行的 ...

struts1,2異常處理

struts2異常處理 struts2 提供了很多 這裡也提供了異常處理的 已經在 struts default.xml 中配置好了,我們只需要宣告式應用即可,action 方法丟擲的異常能夠被自動捕獲然後經過對映指向乙個預定義好的 result。struts2 提供了兩種異常宣告型別 全域性和區域...

Oracle 學習筆記12 異常處理

oracle使用異常來處理,pl sql執行時發生的錯誤,這些異常都可以包括在pl sql程式的exception塊中。oracle提供了許多的內建的異常,使用者也可以根據自己的需要定義異常。oracle的異常可以分為3類 1 預定義異常oracle中內建了大量異常。在pl sql中使用預定義的異常...