【发布时间】:2012-01-11 20:06:07
【问题描述】:
我想在我的 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() 方法中处理 unhandled 和 thread exception 事件处理程序:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
即使在 Java 中也可以完成?
如何在 Java 中覆盖默认的 UncaughtExceptionHandler ?
【问题讨论】:
标签: java exception exception-handling uncaught-exception