1. 程式人生 > >Python基礎---python中的異常處理

Python基礎---python中的異常處理

運行 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中的異常處理