如果try块不包含显式引发异常的代码,是否有理由仅捕捉异常以再次引发异常?

曼队长

是否有理由编写这样的代码?

try {
    foo();
} catch (final Exception e) {
    throw e;
}

如果foo()的声明是void foo() throws Exception正确的,那么显式处理该异常而不是仅仅重新抛出该异常会更好,但是我至少可以看到它的含义(foo()抛出一个检查异常,因此必须被抓住或抛出)。

但是,如果foo()的声明没有说它是throws一个例外,这是否有道理,或者仅仅是不好的编码?

可以

在您的示例中,这样做绝对没有意义。但是,我见过的大多数软件都对异常进行了多级日志记录,这些异常通常向上传播几层(在调用堆栈中有5层以上)。这样的事情很常见:

catch (final Exception e) {
    logger.log(Level.ERROR, srcInfo, "Exception in ...");
    throw e;
}

但这也可能会被滥用,因为调用方法可能会自己进行日志记录,并且日志中会重复很多,但这是一个设计问题。更常见的是,该方法将捕获特定的异常,例如

catch (CustomPlatformException e) {//log and throw e
    } 

然后将其重新引发到更高级别的方法,该方法将捕获的所有子类Exception并分别记录特定流中的一般故障。

catch (Exception e) {//Log general failure in flow, usually at a higher logging level
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显式引发异常的应用

来自分类Java

在catch块中引发异常-是否会再次捕获?

来自分类Dev

是否需要在C#中显式引发异常?

来自分类Python

模拟函数引发异常以测试except块

来自分类Dev

如果引发异常,请再次输入

来自分类Dev

try块引发异常,但catch块未捕获异常

来自分类Java

Java运行代码是否仅在try和catch块中未引发异常的情况下?

来自分类Java

捕获异常时是否有理由不使用final关键字?

来自分类Dev

捕捉QApplication中引发的异常

来自分类Dev

如果finally块引发异常会怎样?

来自分类Dev

孤立代码块在结构中引发异常

来自分类Dev

引发异常以指示未找到元素

来自分类Dev

PL/SQL 异常以什么顺序引发?

来自分类Dev

使引发异常的代码不终止循环

来自分类Dev

如果消息代理关闭,是否有可能引发异常?

来自分类Dev

如果输入无效,是否可能引发异常?

来自分类Dev

Python 异常:如果引发特定异常,则执行代码,否则执行

来自分类Dev

记录代码是否应该引发异常?

来自分类Dev

如果在try / catch块中有调用,并且该方法还引发异常,则catch优先吗?

来自分类Java

在finally块中引发异常

来自分类Dev

在finally块中引发异常

来自分类Dev

try-except块:如果引发异常,则为“ else”的类似物

来自分类Java

集合引发的异常异常

来自分类Dev

PhpStorm检查错误或错误代码?在try块中未引发异常是意外的

来自分类Dev

Python:在except块中引发另一个异常以供以后捕获

来自分类Java

如何在Try / Catch块中引发异常?

来自分类Python

如何在嵌套的try / except块中重新引发异常?

来自分类Python

如何在嵌套的try / except块中重新引发异常?

来自分类Java

我如何在try块中引发异常并终止程序

Related 相关文章

  1. 1

    显式引发异常的应用

  2. 2

    在catch块中引发异常-是否会再次捕获?

  3. 3

    是否需要在C#中显式引发异常?

  4. 4

    模拟函数引发异常以测试except块

  5. 5

    如果引发异常,请再次输入

  6. 6

    try块引发异常,但catch块未捕获异常

  7. 7

    Java运行代码是否仅在try和catch块中未引发异常的情况下?

  8. 8

    捕获异常时是否有理由不使用final关键字?

  9. 9

    捕捉QApplication中引发的异常

  10. 10

    如果finally块引发异常会怎样?

  11. 11

    孤立代码块在结构中引发异常

  12. 12

    引发异常以指示未找到元素

  13. 13

    PL/SQL 异常以什么顺序引发?

  14. 14

    使引发异常的代码不终止循环

  15. 15

    如果消息代理关闭,是否有可能引发异常?

  16. 16

    如果输入无效,是否可能引发异常?

  17. 17

    Python 异常:如果引发特定异常,则执行代码,否则执行

  18. 18

    记录代码是否应该引发异常?

  19. 19

    如果在try / catch块中有调用,并且该方法还引发异常,则catch优先吗?

  20. 20

    在finally块中引发异常

  21. 21

    在finally块中引发异常

  22. 22

    try-except块:如果引发异常,则为“ else”的类似物

  23. 23

    集合引发的异常异常

  24. 24

    PhpStorm检查错误或错误代码?在try块中未引发异常是意外的

  25. 25

    Python:在except块中引发另一个异常以供以后捕获

  26. 26

    如何在Try / Catch块中引发异常?

  27. 27

    如何在嵌套的try / except块中重新引发异常?

  28. 28

    如何在嵌套的try / except块中重新引发异常?

  29. 29

    我如何在try块中引发异常并终止程序

热门标签

归档