猿问

如何捕获解释器出错?

一个项目里面需要一个奔溃后发送错误日志的功能。
因为要打包exe,所以不想写另外一个新exe。然后监控PID什么的。想在一个py。里面完成。求大神给方案
这个是简单的奔溃代码。
frommultiprocessingimportProcess
importtime
importsys
fromPyQt4.QtCoreimport*
fromPyQt4.QtGuiimport*
got_error='got!!'
deftimetask():
try:
while1:
time.sleep(.1)
except:
printgot_error
aaa=QApplication(sys.argv)
p=Process(target=timetask,)
if__name__=='__main__':
p.start()
forainxrange(1000):
az=QThread()
az.start()
p.join()
try:
aaa.exec_()
except:
printgot_error
偶然的你
浏览 340回答 2
2回答

陪伴而非守候

PyQt4的异常可能是底层的异常,也可能是sip的异常,这里不是解释器的范畴,解释器无法捕捉到这个异常的。所以你还是另外启动一个进程去管理更靠谱些。

浮云间

和Java一样,python也提供了对于checkedexception和uncheckedexception.对于checkedexception,我们通常使用tryexcept可以显示解决,对于unchecked异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据.下面代码可以实现pythonuncheckedexception回调,并输出日志信息.!/usr/bin/envpythoncoding=utf-8importos,sysimportlogginglogger=logging.getLogger(__name__)handler=logging.StreamHandler(stream=sys.stdout)logger.addHandler(handler)defhandle_exception(exc_type,exc_value,exc_traceback):ifissubclass(exc_type,KeyboardInterrupt):sys.__excepthook__(exc_type,exc_value,exc_traceback)returnlogger.error("Uncaughtexception",exc_info=(exc_type,exc_value,exc_traceback))sys.excepthook=handle_exceptionifname=="__main__":raiseRuntimeError("TestunhandledException")
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答