異常處理
什麼是異常
異常和錯誤的區別
異常發生了是什麼效果
如何檢視報錯資訊
最簡單的異常異常處理
pass
多分支異常處理
l = ['但是異常是很多的,總部呢個全部except +異常: 把?d','
z','t'
]for i in enumerate(l ,1):
print(i[0],i[1])
try:
num = int(input('
num:'))
print(l[num-1])
except
valueerror:
print("
請輸入乙個數字")
except
indexerror:
print("
您輸入的數字無效")
#當出現valueerror、indexerror 可以很好的解決
所以介紹一下 萬能異常
try可是上面所有異常都給你解決了。你不是抓蝦嗎?:
#name
dic={}
dic[
"key"]
except exception: #
萬能異常
pass
所以 這樣用/!
try萬能異常和其他分支合作:
#name
dic ={}
dic[
"key"]
except exception as e: #
e隨意取,是乙個物件
print(type(e), e, e.__traceback__
.tb_lineno)
#'key' 18 (18是行數)
try異常處理的其他機制: name
[3]import
aexcept nameerror: pass
except indexerror: pass
except exception: pass
#萬能異常永遠放在最後乙個except,因為上面有異常,就相應停止+報錯了
try+except
trytry+except+else: name
[3]except
(indexerror,nameerror) as e:
print(e) #
name 'name' is not defined
trytry+ except+else+finally: name
[3]import
aexcept
nameerror:
print("
name error")
else
:
print("
沒有錯,就執行else
")
try那finally無論如何都會執行,那有和放在平常的地方,有何區別, 有啥用?: name
[3]import
aexcept
nameerror:
print("
name error")
else
:
print("
沒有錯,就執行else")
finally
:
print("
無論如何都會執行我
")
例如開啟檔案 f = open(xx),最後finally 執行f.close()
居然return了後 ,還能執行我finally!?牛皮,靠譜
defview codefunc():
try:
f = open('
file
',"w")
return
f.read()
finally
: f.close()
print('
執行我了,那麼就等於執行finally')
func()
++++++++++++++++執行我了,那麼就等於執行finally
traceback (most recent call last):
報錯資訊
finally :資源**
有這麼幾種組合
try/excpet
try/excpet/else/finally
try/excpet/finally
try/finally
主動丟擲異常
raise timeouterro
try自定義異常: num = int(input("
>>>"))
except
valueerror:
raise
nameerror
#先原封不動排除try語句出現的異常,再丟擲我們設定的nameerror,
class斷言ddexception(baseexception): # 或者繼承exception
def__init__
(self, msg):
self.msg =msg
raise ddexception('
這是乙個x錯誤,有x問題
') #
傳入錯誤提示
#exception 是祖宗能處理99%+的異常,baseexception是祖宗的祖宗 能處理全部異常
assert布林值#
只要是這個布林是正確的 就往下走。錯誤就丟擲異常 相當於下面的if else
#好處是不用縮排,只要一行**
assert true等於
if使用異常處理的注意事項false:
print(123)
else
:
raise assertionerror
斷言assert ;丟擲異常 raise
後期寫框架的時候用
不能提示使用者。這是給程式設計師看的
異常 raise assert(斷言)
try except 語法 try 語句 執行別的 except 異常型別 語句 如果在try部份引發了 name 異常 except 異常型別 as 資料 語句 如果引發了 name 異常,獲得附加的資料 else 語句 如果沒有異常發生當程式出現錯誤,python會自動引發異常,也可以通過rai...
iOS斷言 拋異常
自定義描述異常資訊的desc就是所謂的拋異常 注意 assert是乙個巨集,只在debug版本中起作用,在release版本中,該語句是不起任何作用的。示例一 給label屬性賦值不能為空,新增斷言,如果為空,則直接crash,拋異常 import mainviewcontroller.h inte...
python異常和斷言
在寫程式時可能會遇到錯誤,整個程式就會崩潰,但我們希望程式能檢測錯誤並繼續執行。這可以使用try except語句來處理,把可能出錯的語句放在try子句中,如果發生錯誤,則轉到except子句。try print 2 0 except zerodivisionerror print error in...