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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以不同方式处理两个异常(动作1和2),但如果它们一起出现,则用动作1处理它们?相关的知识,希望对你有一定的参考价值。

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

while True:
    try:
        raise CustomError

    except CustomError:
        # Action1

    except KeyboardInterrupt:
        # Action2

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

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

谢谢!

答案

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

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

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

以上是关于如何以不同方式处理两个异常(动作1和2),但如果它们一起出现,则用动作1处理它们?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常

如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常

如何以一种好的 Java 方式处理异常引起的原因

如何在struts 2中处理未映射的操作以重定向到某个合适的错误页面?

如何在 iPad 中处理不同的滚动视图以改变方向?

Python Execnet 和异常处理