为什么需要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被正常结果占用的情况,就需要输出一个特殊值(类似c++中控制台输出一串错误信息时的情况)
- 如果我在getGap中没有处理特殊情况,就会传递错误的信息。
- 在逻辑复杂的时候,特殊情况容易跟正常情况搞混。
那么异常的作用就体现出来了,通过提供一套全新的语法(try catch throw throws)来传递错误的信息,并且强制必须处理调用函数的异常(要么抛出要么捕获),提高了代码的健壮性。
以上是关于为什么需要java异常?的主要内容,如果未能解决你的问题,请参考以下文章