在不同的程序中使用相同的Excepts

时间:2014-04-15 09:55:38

标签: python exception

我有一堆类都使用相同的模块Errors.py,我用类定义了我的自定义异常:

class Errors(Exception):

  class funcUnicodeError(Exception):
    def __init__(self, param, err):
      self.err = err
      self.param = param
      self.msg = 'ERROR : Failed to decode PARAM: ' + param  
      self.code = 20

所有这些类都在不同的程序中重复使用,我最终在main函数的末尾有一长串的except子句。一切都很好,除了这些例外对于不同的节目是相同的,我必须在不同的地方保持它。

有没有办法将这些条款除了某些地方除外,以便在不同的程序中对它进行一次唯一的调用?

2 个答案:

答案 0 :(得分:2)

以下代码

try:
   # do something
except Error1:
   # except clause 1
except Error2:
   # except clause 2
... # long list of except clauses
finally:
    # do something

相当于

def main():
    # do something

def run(main_func):
    try:
        main_func()
    except Error1:
        # except clause 1
    except Error2:
        # except clause 2

    ... # long list of except clauses
    finally:
        # do something

run(main)

现在您可以将函数run外包到模块中,并且可以在不同的程序中多次重复使用它。

答案 1 :(得分:0)

如果您的异常足够通用,多个不相关的程序可以共享同一个异常堆栈,您可能应该尝试使用内置的异常类(例如ValueError,TypeError等)。