有没有办法找出python程序关闭的原因?

时间:2014-02-16 21:47:12

标签: python file-io

有没有办法以编程方式找出为什么 Python 程序已关闭?

我正在使用python制作游戏,并且我一直在使用内置的 open()函数在.txt文件中创建日志。我遇到的一个主要问题是,当它偶尔崩溃时,日志并没有意识到它已经崩溃了。  我已设法记录用户是否通过按退出按钮关闭游戏,但我想知道是否有办法检查如何程序关闭。例如,如果用户按下退出键,如果它崩溃或强行关闭(例如通过任务管理器)

3 个答案:

答案 0 :(得分:5)

您可以提供自己的异常处理程序:

import sys, logging
def excepthook_logger(extype, value, traceback):
    logging.exception("Oh no! An uncaught exception happened!")
    # Uncomment to also show the exceptions
    #sys.__excepthook__(extype, value, traceback)
sys.excepthook = excepthook_logger

然后,每个未捕获的异常都会记录在您的日志文件中。

答案 1 :(得分:2)

一些提示:

  • 尽可能使用try catch。
  • 即使崩溃,堆栈跟踪也会告诉我们上次执行了哪一行。

答案 2 :(得分:0)

您还可以设置defaut安装的Python调试器 例如,在命令行中,您可以检查您的程序

  
    

>>>导入pdb

         

>>>导入youprogram.py

  

然后输入

进行测试
  
    

>>> yourprogramm.test()

  
     

追踪(最近一次呼叫最后一次):

     

文件“”,第1行,在?

     

文件“./mymodule.py”,第4行,在测试中

     

TEST2()

     

文件“./mymodule.py”,第3行,在test2中

     

打印垃圾邮件

要仔细观察,您应该考虑使用

设置调试跟踪以在关键点停止执行
  

pdb.set_trace()

停止执行评论当前操作

有关详细信息,建议您查看文档页面 http://docs.python.org/2/library/pdb.html