Java异常滥用--把逻辑交给魔鬼

在Java代码中,异常大家都不会陌生,今天我们谈谈异常的滥用。

Java的异常分为两类:RuntimeExecption, Exception。

RuntimeException算是一种运行时错误,这些异常可以通过代码处理避免的。如著名的NullPointerException,我们可以通过判断对象是否等于null来避免抛出此异常。
而Exception更多的算是一种代码中的异常分支,是无法通过代码处理来避免的,如IOException,IO操作被中断,属于一种正常的代码处理。

或者,从最终用户的角度来说,Exception是一种用户看得到的能明白的,异常分支处理;而RuntimeException用户是理解不了的,是给机器或程序员用的。

不过,现在很多同学们写代码,为了图方便,把异常滥用了。

我们看一段典型的代码:
package test.unit;

public class ExceptionExample {
        public void catchException(){
                try{
                        System.out.println(“There is no exception.”);
                        //do someting more ….
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
        
        public void catchRunTimeException(){
                try{
                        System.out.println(“There is no runtimeexception.”);
                        //do someting more ….
                }catch(RuntimeException e){
                        
                }
        }
        
        public void catchError(){
                try{
                        System.out.println(“There is no runtimeexception.”);
                        //do someting more ….
                }catch(RuntimeException e){
                        e.printStackTrace();
                }
        }
}

上面这段代码,是一个示意,实际应用要复杂一些,但是对异常的处理,实际代码中确实有这么写的。
我在我们项目中就发现不少这种的代码。

这种代码,相当于给代码逻辑中增加了不确定性

你不知道什么时候会执行到异常分支,且单元测试也永远无法覆盖,不论你怎样moke他。
某种条件下执行到了此分支,也不能提示明确的错误信息给用户。
这种代码,相当于把逻辑交给了魔鬼,无法预测。

本文链接:http://www.yunweipai.com/1560.html

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53164.html

(0)
上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐

发表回复

登录后才能评论