java如何在不同的线程上重新引发异常?
我想使用两个线程,让我们调用它们预取器和客户端,预取器的任务是在客户端线程的前面读取一个输入流,并将其放入某个队列中。然后,客户机从队列中检索数据以。。。呃,处理它
现在如果预取器遇到异常,我需要将一个挂起的异常放入队列中,这样客户机在到达队列中的该点时会发生异常
问题是,我将在预取器线程上捕获一个(IO)异常,但我需要在客户端线程上抛出一个适当的异常
我的第一个想法是抓住它,然后在另一个线程上重新调用它。但是这显然扰乱了异常的堆栈跟踪
那么,我应该简单地将其包装成一个新的异常吗?这意味着“原因”来自另一个线程,这会导致麻烦吗?或者我必须完全抛弃最初的例外;如果可能的话,我希望在客户端引发的异常中保存尽可能多的信息
什么样的习语可以(并且有效)处理这种情况
# 1 楼答案
出于调试目的,最好将原始异常包装为新异常