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