Python捕获解释器出错问题,python捕获解释器,一个项目里面需要一个奔溃
Python捕获解释器出错问题,python捕获解释器,一个项目里面需要一个奔溃
一个项目里面需要一个奔溃后发送错误日志的功能。
因为要打包exe, 所以不想写另外一个新exe。然后监控PID什么的。想在一个py。里面完成。求大神给方案
这个是简单的奔溃代码。
from multiprocessing import Processimport timeimport sysfrom PyQt4.QtCore import *from PyQt4.QtGui import *got_error = 'got!!'def timetask(): try: while 1: time.sleep(.1) except: print got_erroraaa = QApplication(sys.argv)p = Process(target = timetask,)if __name__ == '__main__': p.start()for a in xrange(1000): az = QThread() az.start()p.join()try: aaa.exec_()except: print got_error
和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据.
下面代码可以实现python unchecked exception回调,并输出日志信息.
!/usr/bin/env python
coding=utf-8
import os, sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) returnlogger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
if name == "__main__":
raise RuntimeError("Test unhandled Exception")
PyQt4的异常可能是底层的异常,也可能是sip的异常,这里不是解释器的范畴,解释器无法捕捉到这个异常的。所以你还是另外启动一个进程去管理更靠谱些。
编橙之家文章,
相关内容
- Python显示中文怎样做?需要加包吗,,如题。encoding:
- Python网站系统消息相关模型设计注意哪些问题,python模
- 二次扫描带参数二维码提示“无法服务”什么原因?已
- 大牛看下想动态获取对象特定属性名称,python源码应该怎
- Django admin管理站点修改账户属性报 column 'change_messsage
- Python模块之间共享静态变量的实现原理是什么,python静
- Python元组对索引引用正确语法应该是什么,python索引
- Python判断rss是否更新过用什么方法,python判断rss更新
- Python udp监听线程不能正常启用,pythonudp监听线程,想实
- 想用python抓万达订票信息求个思路,python万达,想在万达
评论关闭