当某些事情(不一定是坏事)发生时,我的模块会引发某些异常。但是,在导入模块时,我希望能够执行以下操作:
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"这样做的方式?或者,我应该遵循一个完善的做法吗?