gpt4 book ai didi

java - catch block 之后的代码是错误的还是毫无意义的?

转载 作者:行者123 更新时间:2023-11-29 04:42:08 24 4
gpt4 key购买 nike

我问的是一个简单的问题。在 catch block 之后有任何代码是不是很糟糕。也就是说,我们是否需要将它们包含在 try 中并在 catch 中重新抛出包装器异常?

我不是在问 finally 操作。

举个例子。在这里 doSomething() 方法抛出一个名为“SomeException”的异常。

代码1:

try{
doSomething();
}catch(SomeException e){
throw new AnotherException(e);
}
doAnotherThing();
return someResult;

代码2:

try{
doSomething();
doAnotherThing();
return someResult;
}catch(SomeException e){
throw new AnotherException(e);
}

以上2个例子,code2有没有加分项?

最佳答案

如果 doSomething() 不抛出异常,但 doAnotherThing() 抛出 SomeException,则这两种情况之间存在差异。

  1. SomeException 将在代码中进一步传播。
  2. SomeException 将被 catch block 捕获并作为 AnotherException 进一步抛出。

另一种需要考虑的情况是 catch block 没有重新抛出异常。

  1. 将执行doAnotherThing()
  2. 不会。

因此,正如其他答案中已经说明的那样,每行有 1 个 try-catch block 可以使您的代码更清晰并避免意外行为。另一方面,当你有这样的事情时,我会考虑将多行分组在同一个 block 中

try {
doSomething(); // can throw SomeException
doAnotherThing();
doSomething(); // can throw SomeException as well
return someResult;
} catch(SomeException e) {
throw new AnotherException(e);
}

如果我们不关心是第一次还是第二次调用 doSomething() 抛出异常并且我们不关心 doAnotherThing() 是否被调用。

关于java - catch block 之后的代码是错误的还是毫无意义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38766128/

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