【发布时间】:2021-08-05 00:43:21
【问题描述】:
是否可以定义一个自己的 with 语句,它自动包含 try...except 错误处理?
例如,最好有一个简写形式:
with Do_Something():
try:
...
except Exception as e:
print(str(e))
...看起来像这样:
with Try_Something():
...
我们如何将 try...except 行为包含到以下 MWE 类中?
class Do_Something():
def __init__(self):
pass
def __enter__(self):
print('Starting...')
# invoke "try" somewhere here?
return(self)
def __exit__(self, except_type, except_value, tb):
# invoke "except" somewhere here?
【问题讨论】:
-
__exit__()方法允许异常处理。详情请参阅docs。 -
这能回答你的问题吗? Handling exceptions inside context managers
-
@Corralien:该链接很有帮助,但它处理了一个更具体的问题。它没有完全回答这里所说的问题,因为我不想以某种方式处理错误,我想重现 try...except 的默认输出。即,问题归结为如何以与
str(e)使用except提供的参数类似的方式输出__exit__提供的回溯信息。
标签: python exception try-catch with-statement