相关疑难解决方法(0)

为什么Java人经常默默地使用异常?

我之前从未做过任何严肃的Java编码,但我根据现有技能(Delphi和C#)学习了语法,库和概念.我很难理解的一件事是,我已经看到了这么多代码,在printStackTrace这样的情况下默默地消耗异常:

    public void process() {
        try {
            System.out.println("test");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我遇到的几乎所有Java文章和项目中都有类似的代码.根据我的知识,这是非常糟糕的.几乎总是应该将异常转发到外部上下文,如下所示:

    public void process() {
        try {
            System.out.println("test");
        } catch(Exception e) {
            e.printStackTrace();
            throw new AssertionError(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

大多数情况下,异常最终应该在属于底层框架的最外层循环中处理(例如Java Swing).为什么Java世界中的代码看起来像这样的规范?我很困惑.

根据我的背景,我宁愿完全删除printStackTrace .我会简单地重新抛出一个未处理的aka RuntimeException(或更好的AssertionError),然后捕获并在最合适的位置记录它:框架最外层循环.

    public void process() {
        try {
            System.out.println("test");
        } catch(Exception e) {
            throw new AssertionError(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

java exception-handling exception

76
推荐指数
8
解决办法
2万
查看次数

除RuntimeException之外的异常

除了Java中的RuntimeException之外,是否有可能发生异常?谢谢.

java exception

2
推荐指数
2
解决办法
2628
查看次数

标签 统计

exception ×2

java ×2

exception-handling ×1