假设我在Python中有这段代码:
while True:
try:
raise CustomError
except CustomError:
# Action1
except KeyboardInterrupt:
# Action2
我希望只要CustomError
发生,Action1就会处理它。但是当且仅当我有KeyboardInterruptError
时,才会发生Action2(即使CustomError
仍然被引发)。
现在我的代码中发生的事情是Action1
总是会发生,如果用户按下CTRL + C,代码会忽略它,但仍会出现Action1
。
如果有人可以帮我解决这个问题,我将不胜感激。
谢谢!
答案 0 :(得分:0)
关于时机,你无能为力;如果在键入Control-C之前引发CustomError
,则Action1
至少会开始。但是,看起来您需要两个try
语句,一个嵌套在另一个语句中:
try:
try:
raise CustomError
except CustomError:
Action1
except KeyboardInterrupt:
Action2
这可以确保在控件位于内部try
子句或CustomError
处理程序中时,会捕获并处理键盘中断。