Java:处理子线程中的异常

标签 java multithreading exception-handling

我更喜欢将异常处理逻辑放在调用堆栈的更上层,靠近 main 方法。我喜欢这种方法...但是,我创建了一个线程,其中 run() 中的某些方法调用可能会引发异常。我真的很想看看是否有一种方法可以将这些异常抛回到父线程?我能想到的最好的办法是在实现 Runnable 的对象中设置一个变量。此变量是包含错误消息的字符串,然后使用类加载器在父线程中正确地重新创建相同的异常。

我想知道的是,有没有更简单的方法来获得我想要的东西? (为了能够确保在子线程中抛出的任何异常都使用与在主线程中运行/代码重用时相同的异常处理逻辑来处理)。

最佳答案

您可以在此处使用 ExecutorService 来提交可调用对象并接收 Future。在这一点上,您至少希望将异常传播到您将调用 future.get()

的调用线程

future.get() 会将调用方法中抛出的任何异常传播到调用 future.get() 的线程。因此,如果您的主线程调用 future.get(),那么主线程将看到任何抛出的异常。

关于Java:处理子线程中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631791/

相关文章:

Java if 与 try/catch 开销

java - 通配符捕获/泛型

c# - 多线程和 C# 异常。文件正在被另一个进程使用

java - 为什么我的变量在使用不同的类时返回 null 和/或 0?

c++ - 可以使用lock_guard采用的互斥锁的锁导致UB吗?

Python 3 : Parallel diagonalization of multiple matrices

c# - 如何使用 OnException 方面(PostSharp)继续方法流程?

c# - 即使在检查 null 后字典也会抛出异常

java - 授予 ftp FILE java 权限

java - 在 JTable 中选择列时将标题文本设为粗体