如何在不同于其起源的线程上重新抛出异常?

时间:2014-10-02 15:12:54

标签: java exception exception-handling

我想使用两个线程,让我们称之为 prefetcher 客户端 prefetchers 作业是读取输入流提前 客户端线程并将其放入某个队列。然后,客户端从队列中检索数据,以便...处理它。

现在如果 prefetcher 遇到异常,我需要将待处理异常放入队列,因此客户端会发生异常< em>当到达队列中的那个点时。

问题是,我将在 prefetcher 线程上捕获一个(IO)异常,但我需要在客户端线程上抛出适当的异常。

我的第一个就是抓住它,然后重新抛出在另一个线程上。但是......这显然会弄乱异常的堆栈痕迹?

我应该简单地将它包装成一个新的例外吗?这意味着&#34;原因&#34;是从另一个线程,可能会导致麻烦?或者我必须完全抛弃原来的例外;如果可能的话,我希望将尽可能多的信息保存到客户端抛出的异常中。

有哪些习惯用语(和有效的)来处理这种情况?

1 个答案:

答案 0 :(得分:0)

出于调试目的,最好将原始异常包装到新的