我[相对]是python的新手,我正在制作一个计算复合兴趣的应用程序。我希望用户能够报告他们的崩溃,为此,我需要编写一些在出现问题时执行的代码并且程序停止运行。我只是想显示一些文本并显示一些变量的内容,以便用户可以剪切并粘贴到电子邮件中。
这可行吗?
谢谢!
答案 0 :(得分:0)
当然要看看如何使用try / except:https://docs.python.org/3.4/tutorial/errors.html
示例:
#!/usr/bin/env python3
import sys
def calculation():
return 1/0
if __name__ == "__main__":
try:
print(calculation())
except Exception as e:
print("Oops, something went wrong: {}".format(e), file=sys.stderr)
sys.exit(1)
答案 1 :(得分:0)
如果您知道会引发错误的内容,请使用try except finally
块。
try:
raise ANonSenseError()
except ANonSenseError:
# Log it
# Bring some dialog for users to report it.
finally:
# Well, this part is optional, but you can use it in case an exception isn't thrown
# It will always run
如果您不想使用try except
块,可以尝试建立一些在程序停止时必须执行的操作。您可能无法找出它是什么错误,但您可以灵活地在程序的主要部分崩溃后自由地做任何事情。
此外,如果您正在使用Tkinter,建议:使用Tkinter.Toplevel
来提升顶级窗口。
查看this问题,该问题可以为您提供有关在主应用程序崩溃时启动新窗口的一些指导。
答案 2 :(得分:0)
使用traceback
模块处理stacktrace
。我在exceptions
import traceback
import sys, os
try:
bla
except Exception as e:
top = traceback.extract_tb(sys.exc_info()[2])[-1]
print '{} : {} in {} at line {}'.format(type(e).__name__, str(e), os.path.basename(top[0]), str(top[1]))
输出:
NameError : name 'bla' is not defined in test.py at line 4