качать uncaughtexception handler
Я пытаюсь создать общий обработчик исключений для приложения Swing, как описано здесь:http://www.javaspecialists.eu/archive/Issue081.html
Я работаю в Jython (синтаксис Python компилируется в Java и выполняется). Мой код выглядит примерно так (updated):
def launcher(func):
class launcherThread(Runnable):
def __init__(self):
super(launcherThread, self).__init__()
def run(self):
func()
#trying to get the name which can be used to instantiate this in java
cls = ExceptionGroup().getClass()
fullName = cls.__module__ + '.' + cls.__name__
System.setProperty("sun.awt.exception.handler", fullName)
Thread(ExceptionGroup(), launcherThread(), 'Cross ExceptionHandlerThread').start()
class ExceptionGroup(ThreadGroup):
def __init__(self):
super(ExceptionGroup, self).__init__("HardenedGroup")
def uncaughtException(self, thread, exception):
#make a fancy dialog displaying str(exception)
Если я проверяю его, он работает нормально, однако в производственной среде он терпит неудачу. Для тестирования я запускаю свою программу в Eclipse (PyDev), производственная среда - это стороннее приложение, написанное на Java, со встроенной консолью Jython. Приложение поддерживает добавление пользовательских пунктов меню и размещение на них скриптов jython.
Основное различие, которое я вижу между тестированием и производственной средой, состоит в том, что в производственной среде качающиеся потоки уже запущены (стороннее приложение использует качание). Это вызывает мойThreadGroup
установка не удалась, или есть другая причина, почему это не работает?
Как я могу получить вовлеченные потоки (исключения создаются в результате buttonActions), чтобы проверить их обработчики defaultException? Если (как я боюсь) должно получиться, что третье лицо установило свой собственный обработчик (все исключения записываются в файл журнала), как я могу создать новый рабочий поток Swing? (Я не хочу перехватывать исключения, созданные приложением хоста, в конце концов)
Резюме вопроса:
1. Как я могу проверить, какие потоки запущены для функцииfunc
перешел вlauncher
функция и увидеть их необработанный обработчик исключений?
2. Могу ли я установить отдельный диспетчер Swing для моей графической части и основной графической части приложения? (Если я выйду из OnCnClos во фрейме моей надстройки, стороннее приложение закроется)?
Update:
Considering the anwser from lbalazscs
Я пытаюсь использоватьsun.awt.exception.handler
свойство, но оно не имеет никакого эффекта, исключения все еще остаются в файле журнала (поведение приложений по умолчанию). Я правильно это использую? (p.s .: Я на Яве 1.6)