java - 如果Java中的 block 中有一个任务需要处理,那么重新抛出catch语句中的错误是否正确?

标签 java

我想知道如果 catch 有任务需要处理,重新抛出错误是否合适? Java 中的 block 如下:

try {
  doSomething();
} catch (Exception e) {
  doSomethingElse();
  throw e;
}

有人告诉我,仅仅抛出错误本身是一种不好的做法(可能是错误的),但就我而言,有一个处理部分,我只是想处理一个特定的任务(doSomethingElse)在这种情况下)在这个级别并抛出错误,所以我将采用这种方法。任何见解将不胜感激!

最佳答案

通常您希望将特定错误的错误处理集中在一处。因此,您要么在这里完成整个错误处理,然后不重新抛出异常,要么只是不捕获它并让它在更高级别的原始位置捕获并在那里得到充分处理。有时,您捕获特定类型的异常,然后将其包装在不同的异常中,这是一种可接受的行为:

try {
  doSomething();
} catch (IOException e) {
  doSomethingElse();
  throw new MyCustomException("My custom error message", e);
}

所以你的案例似乎是一个糟糕的设计。但是,我不想 100% 排除这种情况,因为在极少数情况下您可能需要做这样的事情。但作为正常情况,我会说这是一个不好的做法

关于java - 如果Java中的 block 中有一个任务需要处理,那么重新抛出catch语句中的错误是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757606/

相关文章:

用于高级用户帐户保护的 Java 库

Java 和 OpenAPI - 根据响应代码返回不同的负载

java - 在linux中连接POP3S服务器

java - 在一个布局中使用 VideoView 两次

java - 什么是 OutOfMemoryError 异常,如何产生它?

java - 使用 GMailSender 从 Android 应用程序发送带有附件的电子邮件在 Transport.send 处失败

java - 如果无法传递 POST 响应,如何回滚事务

java - 文件中定义的 Spring 属性未解析

java - Firebase:检查是否有任何元素具有特定的属性值

c# - Java Tcp Server 和 .Net Tcp Client 发送和接收问题