swing uncaughtexceptionhandler

Estoy tratando de construir un controlador de excepciones general para una aplicación swing como se describe aquí:http://www.javaspecialists.eu/archive/Issue081.html

Trabajo en jython (la sintaxis de python se compila en java y se ejecuta). Mi código se parece más o menos a esto (actualizado):

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)

Si lo pruebo, funciona bien, sin embargo, en el entorno de producción es fácil. Para las pruebas, lanzo mi programa en Eclipse (PyDev), el entorno de producción es una aplicación de terceros escrita en Java, que tiene una consola Jython incorporada. La aplicación admite la adición de entradas de menú personalizadas y las secuencias de comandos jython.

La principal diferencia que veo entre las pruebas y el entorno de producción es que, en el entorno de producción, los hilos de swing ya están iniciados (la aplicación de terceros utiliza el swing). ¿Esto causa miThreadGroup configuración para fallar, o hay otra razón por la que esto no funciona?

¿Cómo puedo obtener los subprocesos Involucrados (se producen excepciones como resultado de las acciones de los botones) para verificar sus manejadores de excepciones predeterminadas? Si (como me temo) debería resultar que el tercero instaló su propio controlador (todas las excepciones se escriben en un archivo de registro) ¿cómo puedo crear un nuevo subproceso de trabajo de swing? (No quiero capturar las excepciones creadas por la aplicación host después de todo)

Resumen de la pregunta: 1. ¿Cómo puedo verificar qué subprocesos se inician para la función?func pasado a lalauncher ¿Funcionar y ver su controlador de excepciones no capturado? 2. ¿Puedo imponer un distribuidor de columpios separado para mi parte de interfaz gráfica de usuario y la parte de interfaz principal de aplicaciones? (Si salgo de OnClos en un marco de mi complemento, la aplicación de terceros se cierra).

Actualizar: Teniendo en cuenta la respuesta delbalazscs Estoy tratando de usar elsun.awt.exception.handler propiedad, pero no tiene ningún efecto, las excepciones aún terminan en el archivo de registro (comportamiento de las aplicaciones dfeault). ¿Lo estoy usando bien? (p.s .: estoy en Java 1.6)

Respuestas a la pregunta(1)

Su respuesta a la pregunta