Я хочу определить один уровень приложения 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);
Может быть сделано даже на Java?
Как переопределить UncaughtExceptionHandler по умолчанию в Java?