我是[相對]新的python,我正在製作一個計算複合興趣的應用程序。我希望用戶能夠報告它們的崩潰,並且爲此我需要編寫一些代碼,以便在出現問題時執行並且程序停止運行。我只想顯示一些文本並顯示一些變量的內容,以便用戶可以將它們剪切並粘貼到電子郵件中。在Python中崩潰時顯示消息?
這可行嗎?
謝謝!
我是[相對]新的python,我正在製作一個計算複合興趣的應用程序。我希望用戶能夠報告它們的崩潰,並且爲此我需要編寫一些代碼,以便在出現問題時執行並且程序停止運行。我只想顯示一些文本並顯示一些變量的內容,以便用戶可以將它們剪切並粘貼到電子郵件中。在Python中崩潰時顯示消息?
這可行嗎?
謝謝!
當然看看如何使用try /除了這裏: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)
如果你知道的東西,將拋出一個錯誤,使用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的問題,它應該給你一些關於當你的主應用程序崩潰時引發一個新窗口的指導。
使用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