生成自定义异常

时间:2017-11-20 05:05:03

标签: python exception pep8

当某些事情(不一定是坏事)发生时,我的模块会引发某些异常。但是,在导入模块时,我希望能够执行以下操作:

from MyModule import MyModuleExceptions

目前我生成例外的方式是通过此功能:

def gen_exceptions():
    EXCEPTION_TYPES = (
        "FirstException",           # scenario 1
        "SecondException",          # scenario 2
        "UnexpectedException"       # Everything else
    )
    MyModuleExceptionsFactory = namedtuple("exceptions", EXCEPTION_TYPES)
    exceptions = {key: type(key, (Exception,), {}) for key in EXCEPTION_TYPES}

    return MyModuleExceptionsFactory(**exceptions)

MyModuleExceptions = gen_exceptions()

在我的模块中我可以用它作为:

try:
    # do stuff
except MyModuleExceptions.FirstException:
    # Handle scenario 1
except Exception:
    # Everything else

是正确的方式" Pythonic"这样做的方式?或者,我应该遵循一个完善的做法吗?

0 个答案:

没有答案