我的代码如下所示:
# foo.py
from internallib.a import A
A.some(new_schema)
# a.py
from internallib.b import B
class A:
@staticmethod
def some(schema_name):
B.thing(schema_name, other_parameter)
# b.py
import marshmallow
class B:
@staticmethod
def thing(schema_name, other_parameter):
marshmallow.class_registry.get_class(schema_name)
Marshmallow 抛出一个错误,我想为用户捕获并打印该错误,然后退出(而不是仅打印堆栈跟踪)。这里的具体细节是,当调用 get_class 并且架构尚未注册时,Marshmallow 会引发RegistryError。
但是,这是完全预期的情况 - 可以尝试添加架构,并且我想向用户显示该错误 - 将其视为“找不到文件”错误。堆栈跟踪感觉级别太低,无法呈现。
但是,A.some()在代码中的许多地方都会调用它。执行此操作的 pythonic 方法是什么?我的想法:
将 marshmallow() 包装在 try-except 中,打印出一些内容,然后 exit()
去我打电话的任何地方A.some(new_schema)并包装它(这不是我的偏好,但如果有必要的话)
还有别的事吗?
慕神8447489
相关分类