2

我正在编写一个游戏程序,很少会出现异常。我希望能够记录我在一个单独的线程上得到的所有异常。我的程序已经是多线程的。在某些情况下,我使用 try catch,对于那些我可以为捕获的异常设置一个异常变量。但是,我希望能够找出所有线程上抛出的所有异常,而无需将每个语句都放在 try catch 中。为了澄清,我想要异常对象而不仅仅是异常的名称。

4

3 回答 3

2

你想要Thread.UncaughtExceptionHandler

当线程由于未捕获的异常而突然终止时调用的处理程序接口。当线程由于未捕获的异常而即将终止时,Java 虚拟机将使用 Thread.getUncaughtExceptionHandler() 查询线程的 UncaughtExceptionHandler 并将调用处理程序的 uncaughtException 方法,将线程和异常作为参数传递。如果一个线程没有显式设置它的 UncaughtExceptionHandler,那么它的 ThreadGroup 对象充当它的 UncaughtExceptionHandler。如果 ThreadGroup 对象对处理异常没有特殊要求,它可以将调用转发给默认的未捕获异常处理程序。

有关详细信息,请参见此处

于 2013-04-09T10:41:25.690 回答
0

这可以使用在这些情况下有用的Spring AOP来完成。

@AfterThrowing 方面

为此,您将需要 Spring AOP 库。

之前回答过类似的问题。

于 2013-04-09T10:40:08.577 回答
0

这可以通过作为Java 平台调试器体系结构 (JPDA)一部分的Java 调试接口 (JDI)来完成。

特别是,参见ExceptionRequestExceptionEvent

于 2013-04-09T10:41:22.143 回答