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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值