Python基礎---python中的異常處理
阿新 • • 發佈:2017-07-10
運行 class nal 則無 assert 拋出異常 dex 指定 value
Python中的異常處理
一、什麽是異常處理
python解釋器檢測到錯誤,觸發異常(也允許程序員自己觸發異常)
程序員編寫特定的代碼,專門用來捕捉這個異常(這段代碼與程序邏輯無關,與異常處理有關)
如果捕捉成功則進入另外一個處理分支,執行你為其定制的邏輯,使程序不會崩潰,這就是異常處理。
二、為什麽要進行異常處理
python解析器去執行程序,檢測到了一個錯誤時,觸發異常,異常觸發後且沒被處理的情況下,程序就在當前異常處終止,後面的代碼不會運行,誰會去用一個運行著突然就崩潰的軟件。
所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性。
三、異常處理的語法
1.基本語法:
python為每一種異常定制了一個類型,然後提供了一種特定的語法結構用來進行異常處理
語法:
try:
被檢測的代碼塊
except 異常類型:
try中一旦檢測到異常,就執行這個位置的邏輯
2.異常類只能用來處理指定的異常情況,如果非指定異常則無法處理
# 未捕獲到異常,程序直接報錯
s1 = ‘hello‘
try:
int(s1)
except IndexError as e:
print e
3.多分支
s1 = ‘hello‘
try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e)
基本用不到,有哪個程序員會寫一堆的異常用來處理的。。。
4.萬能異常 在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常,即:
1 s1 = ‘hello‘
2 try:
3 int(s1)
4 except Exception as e:
5 print(e)
5.異常處理中的else
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內代碼塊沒有異常則執行我‘)#只有在沒有異常類型的情況下才能執行else後的代碼 finally: print(‘無論異常與否,都會執行該模塊,通常是進行清理工作‘)#無論有沒有異常都會執行在finally後面的代碼
6.自己創造異常
try:
raise TypeError(‘類型錯誤‘)
except Exception as e:
print(e)
class EgonException(BaseException):
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
try:
raise EgonException(‘類型錯誤‘)
except EgonException as e:
print(e)
7.斷言
1 # assert 條件 assert 1 == 1#斷定條件滿足這個條件才會執行代碼否則的話會拋出異常。 assert 1 == 2
8.寫在最後的話
註意:
try...except應該盡量少用,因為它本身就是你附加給你的程序的一種異常處理的邏輯,與你的主要的工作是沒有關系的
這種東西加的多了,會導致你的代碼可讀性變差。
只有在有些異常無法預知的情況下,才應該加上try...except,其他的邏輯錯誤應該盡量修正
Python基礎---python中的異常處理