【发布时间】:2015-04-26 09:42:00
【问题描述】:
我想这样做:
try:
raise A()
except A:
print 'A'
except (A, B):
print 'A,B'
我希望同时打印A 和A,B。
这不起作用(只执行第一个except)。第一个 except 吞下错误是有道理的,以防您想在子类成为父类之前捕获它。
但是还有另一种优雅的方法可以让它工作吗?
我当然可以执行以下操作,但这似乎是多余的代码重复,特别是如果涉及的不仅仅是 A 和 B:
try:
raise A()
except A:
print 'A'
print 'A,B'
except B:
print 'A,B'
(与Multiple exception handlers for the same Exception相关,但不重复。用法不同,我想知道如何以最少的代码重复最好地处理它。)
【问题讨论】:
-
@vaultah(为什么)你删除了你的答案?
-
我做了,因为我对此不满意。
-
异常只和A有关的情况下为什么要打印A、B?
-
@PadraicCunningham:
except (A, B)的异常也可能与B有关。 -
为什么不只是
catch (exceptions...) as e并打印 e.whatever
标签: python exception coding-style paradigms