生成自定义异常

2024-09-30 12:11:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模块在发生不一定是坏的事情时会引发某些异常。但是,在导入模块时,我希望这样做以导入所有模块:

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”吗?还是有一个我应该遵循的既定惯例


Tags: 模块方法keyexceptionelseexceptionstypesgen

热门问题