Я хочу определить один уровень приложения UncaughtExceptionHandler в моем приложении Java, который вызывается, если непокрытое исключение выбрано в одном потоке моего приложения. Я знаю, что возможно определить неперехваченное исключение для группы потоков (ThreadGroup), и я действительно использую ее, но я хочу определить глобальное неперехваченное исключение для потоков, которые не определили свой собственный обработчик неперехваченных исключений или которые не связаны с группой потоков, для которых определен обработчик исключений по умолчанию.
Итак, например, я хочу получить что-то вроде этого:
1° LEVEL ---> Call thread own UncaughtExceptionHandler ---> 2° LEVEL Call Thread Group UncaughtExceptionHandler ---> 3° LEVEL Call application(default) UncaughtExceptionHandler
В простых терминах я хочу переопределить UncaughtExceptionHandler по умолчанию и определить собственный обработчик вместо печати трассировки стека на System.err
(это поведение по умолчанию).
Например, в С#.NET я делаю что-то подобное с обработкой обработчика событий необработанного и потока в методе Main() приложения:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Может быть сделано даже на Java?
Как я могу переопределить UncaughtExceptionHandler по умолчанию в Java?