如何以不同方式处理两个异常(动作1和2),但如果它们一起出现,则用动作1处理它们?

时间:2018-02-26 19:48:23

标签: python exception

假设我在Python中有这段代码:

while True:
    try:
        raise CustomError

    except CustomError:
        # Action1

    except KeyboardInterrupt:
        # Action2

我希望只要CustomError发生,Action1就会处理它。但是当且仅当我有KeyboardInterruptError时,才会发生Action2(即使CustomError仍然被引发)。 现在我的代码中发生的事情是Action1总是会发生,如果用户按下CTRL + C,代码会忽略它,但仍会出现Action1

如果有人可以帮我解决这个问题,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

关于时机,你无能为力;如果在键入Control-C之前引发CustomError,则Action1至少会开始。但是,看起来您需要两个try语句,一个嵌套在另一个语句中:

try:
    try:
        raise CustomError
    except CustomError:
        Action1
except KeyboardInterrupt:
    Action2

这可以确保在控件位于内部try子句或CustomError处理程序中时,会捕获并处理键盘中断。