我有一个用来停在Ctrl + C上的代码。我做了Ctrl + C后,我想做一些事情。因此我写道:
try:
work()
except KeyboardInterrupt:
do_other_stuff()
但我不知道我在哪里做了Ctrl + C,因为没有Traceback打印;我想看到通常的消息
Traceback (most recent call last):
File "X.py", line 16, in <module>
...
我该如何打印?我试着做
except KeyboardInterrupt as e:
print str(e)
do_other_stuff()
但它没有打印任何内容。
答案 0 :(得分:4)
import sys, traceback
def func():
try:
work()
except KeyboardInterrupt:
do_something()
traceback.print_exc(file=sys.stdout)
如果省略file
,则输出转到stderr
。
有关追溯的更多信息...... https://docs.python.org/2/library/traceback.html
答案 1 :(得分:1)
KeyboardInterrupt
继承自BaseException
,BaseException
您可以使用traceback.format_exc(e)
获取错误行。
答案 2 :(得分:0)
你很亲密:
try:
while True:
x = 1
except KeyboardInterrupt as e:
print 'Here we are, in the error handler!'
raise e
请确保在致电do_other_stuff()
之前运行raise e
。