淺談python拋出異常、自定義異常, 傳遞異常

分類:IT技術 時間:2016-10-07

一. 拋出異常

python用異常對象(exception object)表示異常情況,遇到錯誤後,會引發異常。如果異常對象並未被處理或捕捉,程序就會用所謂的回溯(Traceback,一種錯誤信息)終止執行。

raise 語句

Python中的raise 關鍵字用於引發一個異常,基本上和C#和Java中的throw關鍵字相同,如下所示:

import traceback

def throw_error():
  raise Exception("拋出一個異常")#異常被拋出,print函數無法執行
  print("飛天豬")
  
throw_error()

#運行結果:

'''Traceback (most recent call last):
 File "C:\Users\Administrator\Desktop\systray.py", line 7, in <module>
  throw_error()
 File "C:\Users\Administrator\Desktop\systray.py", line 4, in throw_error
  raise Exception("拋出一個異常")#異常被拋出,print函數無法執行
Exception: 拋出一個異常'''

raise關鍵字後面是拋出是一個通用的異常類型(Exception),一般來說拋出的異常越詳細越好

二.傳遞異常:

捕捉到了異常,但是又想重新引發它(傳遞異常),可以使用不帶參數的raise語句即可:

class MufCalc(object):
  m = False
  def calc(self,exp):
    try:
      return eval(exp)
    except ZeroDivisionError:
      if self.m:
        print("cool")
      else:
        raise

app = MufCalc()
app.calc(2/0)

三.自定義異常類型

Python中也可以自定義自己的特殊類型的異常,只需要要從Exception類繼承(直接或間接)即可:

class MyError(Exception):
  pass


Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad