为什么需要java异常?

Posted mqzpy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么需要java异常?相关的知识,希望对你有一定的参考价值。

假设现在没有异常相关的语法,有这样的代码,输出父亲和儿子年龄差:

int gap(int fatherAge, int sonAge) {
        return fatherAge - sonAge;
    }

如果输入的年龄有可能是负数,那么问题来了,我该怎么修改代码?我该怎么处理这个情况?显然这个情况是不能==立即处理==的,因为在当前方法中,得到的信息不够多,需要到更高一级的情景(调用方法的地方)来处理,如下:

int gap(int fatherAge, int sonAge) {
        if (fatherAge <= 0 || sonAge <= 0) {
            return -1;
        }
        return fatherAge - sonAge;
    }
int getGap(int fatherAge, int sonAge) {
        int gap = gap(fatherAge, sonAge);
        if (gap == -1) {
            return -1;
        }
        return gap;
    }

上面是修改的gap方法和一个调用的getGap方法,可以看到,在getGap中,使用if来判断是否是错误的参数,如果是,输出-1。那问题来了,我上面说到调用的环境处理错误情况,你怎么又特么输出-1了?我只能说,现在还不是处理的时候。你又问了,那你什么时候才能处理?要知道什么时候能处理,就要知道问题是怎么来的,问题是给了错误的参数,那么就要交给==生成错误参数的方法==去处理,皆大欢喜了。
那又要问了,我为什么需要异常?从上面的方法中可以看出

  1. 如果遇到-1被正常结果占用的情况,就需要输出一个特殊值(类似c++中控制台输出一串错误信息时的情况)
  2. 如果我在getGap中没有处理特殊情况,就会传递错误的信息。
  3. 在逻辑复杂的时候,特殊情况容易跟正常情况搞混。

那么异常的作用就体现出来了,通过提供一套全新的语法(try catch throw throws)来传递错误的信息,并且强制必须处理调用函数的异常(要么抛出要么捕获),提高了代码的健壮性。

以上是关于为什么需要java异常?的主要内容,如果未能解决你的问题,请参考以下文章

java 反射代码片段

片段 getArguments() 空指针异常

片段中的 EditText 上的空指针异常 [重复]

Java异常处理机制

Android Java:在 onCreateView() 中返回空视图的片段

java啥时候需要抛出异常