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中使用預定義的異常...