为应用程序的所有线程定义一个全局 UncaughtExceptionHandler
2022-09-03 06:00:01
我想在我的 Java 应用程序中定义一个应用程序级 UncaughtExceptionHandler,如果应用程序的一个线程中抛出未捕获的异常,则会调用该处理程序。我知道这可以为一组线程(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中完成?
如何覆盖Java中默认的UncaughtExceptionHandler?