首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在KeyboardInterrupt()上捕获跟踪

在KeyboardInterrupt()上捕获跟踪
EN

Stack Overflow用户
提问于 2016-07-01 12:10:44
回答 3查看 1.3K关注 0票数 1

我有一个在Ctrl+C上停止的代码。我想在做Ctrl+C之后做一些事情。因此我写:

代码语言:javascript
复制
try:
    work()
except KeyboardInterrupt:
    do_other_stuff()

但我看不出我做了什么Ctrl+C,因为没有回溯打印;我想看看通常的信息

代码语言:javascript
复制
    Traceback (most recent call last):
       File "X.py", line 16, in <module>
         ...

我怎么打印这个?我试着做

代码语言:javascript
复制
    except KeyboardInterrupt as e:
       print str(e)
       do_other_stuff()

但它什么也没印。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-01 12:21:09

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2016-07-01 12:15:44

你们很亲密:

代码语言:javascript
复制
try:
    while True:
        x = 1
except KeyboardInterrupt as e:
    print 'Here we are, in the error handler!'
    raise e

只需确保在调用do_other_stuff()之前运行raise e即可。

票数 1
EN

Stack Overflow用户

发布于 2016-07-01 12:19:36

KeyboardInterruptBaseException继承,在BaseException中,您可以使用traceback.format_exc(e)获得错误的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38145111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档