gpt4 book ai didi

java - 需要在实现中抛出检查异常,但接口(interface)没有抛出该异常?

转载 作者:行者123 更新时间:2023-12-01 07:55:12 24 4
gpt4 key购买 nike

我正在实现 Accumulo BatchWriter接口(interface)在插入之前对记录执行一些额外的计算。如果出现问题,该计算可能会引发已检查的异常,但 BatchWriter 引发的唯一异常是 MutationsRejectedException 。因此,当我尝试执行的预处理过程中发生错误时,我无法抛出必要的已检查异常。

现在,我可以捕获已检查的异常,并简单地在其位置抛出另一个异常:要么是未检查的异常,例如某些 RuntimeException 或 MutationsRejectedException。这两个选项看起来都不太好 - 未经检查的异常是我想要实际抛出的异常的糟糕模拟,而抛出 MutationsRejectedException 不允许我看到错误的实际原因。

这里的最佳实践是什么?

最佳答案

"MutationsRejectedException wouldn't allow me to see the actual cause of the error."

是的MutationsRejectedException可以让您通过 chained exceptions 查看实际原因。请注意构造函数中的“Throwable Cause”。1.7版本代码;

try{
//...
} catch (Exception e) {
throw new MutationsRejectedException(null, null, (Map<TabletId,Set<SecurityErrorCode>>)null, null, 1, e);
}

.

try{
//...
} catch (MutationsRejectedException e) {
Throwable c = e.getCause();
if(c instanceof MyException){
//...
}else{
throw e;
}
}

关于java - 需要在实现中抛出检查异常,但接口(interface)没有抛出该异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com