python try 異常處理(史上最全)
在程序出現bug時一般不會將錯誤信息顯示給用戶,而是現實一個提示的頁面,通俗來說就是不讓用戶看見大黃頁!!!
有時候我們寫程序的時候,會出現一些錯誤或異常,導致程序終止.
為了處理異常,我們使用try...except
把可能發生錯誤的語句放在try模塊里,用except來處理異常。
except可以處理一個專門的異常,也可以處理一組圓括弧中的異常,
如果except後沒有指定異常,則默認處理所有的異常。
每一個try,都必須至少有一個except
在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常
s1 = hello
try:
int(s1)
except Exception,e:
print e
程序時需要考慮到try代碼塊中可能出現的多個異常,可以這樣寫:
s1 = hello
try:
int(s1)
except IndexError,e:
print e
except KeyError,e:
print e
except ValueError,e:
print e
異常的簡單結構和複雜結構
try:
pass
except Exception as e: #python2 中還可以這樣寫:except Exception,e
pass
完整實列
try:
# 主代碼塊
pass
except KeyError,e:
# 異常時,執行該塊
pass
else:
# 主代碼塊執行完,執行該塊
pass
finally:
# 無論異常與否,最終執行該塊
pass
先定義特殊提醒的異常,最後定義Exception,來確保程序正常運行。
先特殊,後萬能
s1 = hello
try:
int(s1)
except KeyError,e:
print 鍵錯誤
except IndexError,e:
print 索引錯誤
except Exception, e:
print 錯誤
主動觸發異常
raise Exception(messages) 可以自定義報錯信息
a=2
if a > 1:
raise ValueError(值大於1)
raise 觸發異常
try:
raise Exception(錯誤了。。。)
except Exception,e:
print e
自定義異常
class WupeiqiException(Exception):
def __init__(self, msg):
self.message = msg
def __str__(self):
return self.message
try:
raise WupeiqiException(我的異常)
except WupeiqiException,e:
print e
python所有的標準異常類:
TAG:Python |