我已經使用wx python編寫了一個相當複雜的腳本,類等等的python應用程序。該應用程序從外部源獲取xml文件並操縱它們,這有時會在腳本的各個不同區域引起意外的異常。在IDLE中運行應用程序時這很好,我可以在IDLE shell中看到任何異常,但我需要將其作爲獨立應用程序運行,我使用py2app和pyinstaller。所以切入追逐,我的問題是...作爲獨立應用程序運行時,我想打印任何python異常到wx.stc.StyledTextCtrl窗口或類似的東西,所以我至少可以看到任何奇怪的事情發生。我曾看過使用try
和except Exception
來捕捉異常,但我必須重新編寫我的應用程序以包含這些類型的異常。我有什麼選擇? 這裏是我的應用程序的一個非常小的例子,顯然與膽量丟失:Python輕鬆捕獲所有在wx python應用程序中的traceback(最近調用最後一個)
import wx
import os
import os.path
import subprocess
import pipes
import platform
import shlex
from subprocess import Popen, PIPE
import sys
import threading
import wx.stc as stc
import traceback
class MainWindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(600, 550), style=wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER |
wx.RESIZE_BOX |
wx.MAXIMIZE_BOX))
self.run_params = {}
self.run_params["refresh"] = False
systemType = platform.system()
.........................
app = wx.App()
MainWindow(None, -1, 'My Application')
app.MainLoop()
您是否正在尋找一種方法來定義一個「未處理的異常處理程序」,將被調用任何異常中的任何異常發生'塊? – abarnert 2014-10-16 21:39:54
是的,這聽起來正是我想要的,只要我只能使用1次嘗試。 – speedyrazor 2014-10-16 21:46:16