为什么需要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)来传递错误的信息,并且强制必须处理调用函数的异常(要么抛出要么捕获),提高了代码的健壮性。

posted @ 2019-05-23 12:00  mqzpy  阅读(382)  评论(0编辑  收藏  举报