小编典典

用“正确的方法”在Python中进行通用异常处理

python

有时我发现自己想执行几个顺序命令,例如:

try:
    foo(a, b)
except Exception, e:
    baz(e)
try:
    bar(c, d)
except Exception, e:
    baz(e)
...

当仅需要忽略异常时,也会发生相同的模式。

这感觉很多余,语法过多,导致在阅读代码时很难遵循。

在C语言中,我可以使用宏轻松解决这种类型的问题,但是不幸的是,这无法在纯Python中完成。

问题:遇到这种模式时,如何最好地减少代码占用空间并提高代码可读性?


阅读 228

收藏
2021-01-20

共1个答案

小编典典

如果您使用的是python
2.5或更高版本,则可以使用以下with语句

from __future__ import with_statement
import contextlib

@contextlib.contextmanager
def handler():
    try:
        yield
    except Exception, e:
        baz(e)

您的示例现在变为:

with handler():
    foo(a, b)
with handler():
    bar(c, d)
2021-01-20