標籤:

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 |