异常是什么?在Java里,异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。
我们这一节主要是讲解异常机制之前的的出错处理方法。我们先来说说为什么需要进行出错处理。
先看代码


在如图所示的代码中,Converter类负责将一个为数字的字符串转化为一个int型的数字(这里仅支持正数,在这里不是重点!),我们的示例是将"123"转化为123,显然是成功的,不会出错。
思考,如果输入的字符串有问题,该怎么办?
考虑以下两种出错情况:
1、用户输入了非法字符,如"201k8"
2、用户输入过长,如"112233445566"(注:int型整数的范围上限为2147483647)
显然,我们作为程序的提供方,不能要求客户必须使用数字输入(我们权力还没那么大,如果你权力有那么大,那么可以不用考虑这些情况发生),也有可能用户手抖了不小心输入了个字母。那么我们应当怎么处理可能出现的这些错误,直接让程序报错,中断程序运行?一个优秀的程序员应该避免这种情况发生,当这种情况出现时,我们可以提醒用户,“输入错误,请检查后重新输入”,(用户是上帝,做一款友好的程序给用户),那应该怎么做呢?如何将出错信息返回给调用者?我们可以加一条if语句进行判断,检查一下用户的输入!
第一种方法:返回值
规定:返回-1表示非法字符,-2表示超出范围(如果可以返回负数时,此方法不可行)

第二种方法:添加属性(标识法)
private int status = 0;
status为0表示转换正常;-1表示非法字符;-2表示超出范围

同理,字符长度检测(具体情况忽略,这不是重点!)

这时,main函数应该修改为

这样,大致能达到我们的要求。
当错误情况发生时,这里给出的是一种普通的解决办法(不一定是最好的办法),也可以使用异常机制(Java对异常处理机制比较完善),当对程序的健壮性要求较高,需求较大时,我们就应该考虑异常机制了(下节见)。
注:
1、这里我们讨论的错误指“可预期的出错情况”!
2、为什么不一定是最好的办法?
在大型程序下,对于一些较多的预期错误等情况下,可优先考虑使用Exception机制,方便管理。但这种机制并不是没有缺点,比如,通常情况下资源需求比这节的出错处理方法要多,耗时较高,Exception也就不能滥用。所以,对于一些小错误下,可考虑使用这节所说的出错处理方法。
网友评论