要么重新中断此方法,要么重新抛出声纳中的“中断异常问题”

在我的一个方法中,中断异常和执行异常即将到来。我像这样尝试捕捉。

try{

  //my code
}catch(InterruptedException|ExecutionException e)

  Log.error(" logging it");
  throw new MonitoringException("it failed" , e)


//monitoringexception extends RunTimeException

也在我的方法中,我把投掷InterruptedException,ExecutionException

我在声纳中遇到严重错误 - 要么重新中断此方法,要么重新抛出”InterruptedException"

任何人都知道如何解决这个问题。

请立即提供帮助。


答案 1

将“重新中断”作为最佳实践:

try{
    //some code
} catch (InterruptedException ie) {
    logger.error("InterruptedException: ", ie);
    Thread.currentThread().interrupt();
} catch (ExecutionException ee) {
    logger.error("ExecutionException: ",ee);
}

通常,当线程中断时,无论谁中断了线程,都希望线程退出它当前正在执行的操作。

但是,请确保您不要进行多重捕获:

catch (InterruptedException | ExecutionException e) {     
  logger.error("An error has occurred: ", e);
  Thread.currentThread().interrupt();
}

我们不希望执行异常被“重新中断”。

奖金:
如果您有兴趣,可以在这里


玩示例 干杯


答案 2