如何以不同方式处理两个异常(动作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 请求以不同方式处理异常