我在代码库中看到了很多以下模式,我现在正在检查:
try:
import moduleA
import moduleB
from custom.module.A import AX
from custom.module.A import AY
except KeyboardInterrupt:
sys.exit()
之前没见过。这是什么防守?
答案 0 :(得分:3)
我能想到的唯一方法是有道理的,如果某些modules
由于某种原因而导致input
/ raw_input
在其中运行,或者故意{{1}出于某种原因。
否则,真的不太确定它的意图......(除非一些进口需要花费数小时才能运行,如果你厌倦了,可以放弃它而不会看到追溯 - 但这并没有太多感觉要么)
答案 1 :(得分:2)
每当您从键盘上按 ctrl + C 时,都会向python进程发送KeyboardInterrupt。如果没有捕获,它将导致代码中的异常,以便代码退出当前的任何位置。在这种情况下,没有采取任何特殊操作,但只是调用sys.exit()
,这再次导致程序退出,但是,没有显示堆栈追溯
来自文档:
答案 2 :(得分:1)
它无法防范任何事情,至少不是很明显。它正在追赶KeyboardInterrupt:
当用户按下中断键(通常是Control-C或。)时触发 删除)。在执行期间,定期检查中断。 该异常继承自BaseException,以免意外发生 被捕获异常的代码捕获,从而阻止了解释器 从退出。
然后简单地退出,这无论如何都会中断。