gpt4 book ai didi

Java:在一个 block 中使用 Catch 和 throws?

转载 作者:行者123 更新时间:2023-12-01 11:00:50 25 4
gpt4 key购买 nike

捕获然后还抛出如下所示的异常有什么意义?两者都做是不好的做法吗?

  try{

//something

} catch (Exception e){

throw new RuntimeException("reason for exception");
}

最佳答案

通常,此类代码用于重新包装异常,这意味着转换异常的类型。通常,当方法中允许的异常受到限制时,您可以执行此操作,但内部可能会发生其他类型的异常。例如:

class MyServiceImplementaiton implements MyService {
void myService() throws MyServiceException { // cannot change the throws clause here
try {
.... // Do something
} catch(IOException e) {
// re-wrap the received IOException as MyServiceException
throw new MyServiceException(e);
}
}
}

这种习惯用法能够不断向调用者传播异常,同时符合接口(interface)中的 throws 子句并隐藏内部细节(IOException 可能发生的事实)。

实际上,这总是比仅仅调用 e.printStackTrace() 更好,后者实际上会“吞掉”错误条件并让程序的其余部分像什么都没发生一样运行。在这方面,Eclipse 的行为非常糟糕,因为如果开发人员不小心,它往往会自动编写此类不良实践构造。

关于Java:在一个 block 中使用 Catch 和 throws?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33341926/

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