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

问题描述 投票:1回答:1

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

while True:
    try:
        raise CustomError

    except CustomError:
        # Action1

    except KeyboardInterrupt:
        # Action2

我希望每当CustomError发生时,Action1都会处理它。但是,当且仅当我有一个KeyboardInterruptError,然后Action2发生(即使仍然提出CustomError)。现在在我的代码中发生的是Action1总是发生,如果用户按CTRL + C,代码忽略它,仍然发生Action1

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

谢谢!

python exception
1个回答
0
投票

关于时间安排你无能为力;如果在输入Control-C之前提高CustomError,那么Action1至少会开始。但是,看起来你想要两个try语句,一个嵌套在另一个中:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.