我更喜欢将异常处理逻辑放在调用堆栈的更上层,靠近 main 方法。我喜欢这种方法...但是,我创建了一个线程,其中 run() 中的某些方法调用可能会引发异常。我真的很想看看是否有一种方法可以将这些异常抛回到父线程?我能想到的最好的办法是在实现 Runnable
的对象中设置一个变量。此变量是包含错误消息的字符串,然后使用类加载器在父线程中正确地重新创建相同的异常。
我想知道的是,有没有更简单的方法来获得我想要的东西? (为了能够确保在子线程中抛出的任何异常都使用与在主线程中运行/代码重用时相同的异常处理逻辑来处理)。
最佳答案
您可以在此处使用 ExecutorService 来提交可调用对象并接收 Future。在这一点上,您至少希望将异常传播到您将调用 future.get()
future.get() 会将调用方法中抛出的任何异常传播到调用 future.get() 的线程。因此,如果您的主线程调用 future.get(),那么主线程将看到任何抛出的异常。
关于Java:处理子线程中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631791/