Java基础 异常(一)——出错处理(异常之前)

    异常是什么?在Java里,异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。

    我们这一节主要是讲解异常机制之前的的出错处理方法。我们先来说说为什么需要进行出错处理。

    先看代码

Java基础 异常(一)——出错处理(异常之前)_第1张图片
main


Java基础 异常(一)——出错处理(异常之前)_第2张图片
Converter类

    在如图所示的代码中,Converter类负责将一个为数字的字符串转化为一个int型的数字(这里仅支持正数,在这里不是重点!),我们的示例是将"123"转化为123,显然是成功的,不会出错。

    思考,如果输入的字符串有问题,该怎么办?

    考虑以下两种出错情况:

1、用户输入了非法字符,如"201k8"

2、用户输入过长,如"112233445566"(注:int型整数的范围上限为2147483647)

    显然,我们作为程序的提供方,不能要求客户必须使用数字输入(我们权力还没那么大,如果你权力有那么大,那么可以不用考虑这些情况发生),也有可能用户手抖了不小心输入了个字母。那么我们应当怎么处理可能出现的这些错误,直接让程序报错,中断程序运行?一个优秀的程序员应该避免这种情况发生,当这种情况出现时,我们可以提醒用户,“输入错误,请检查后重新输入”,(用户是上帝,做一款友好的程序给用户),那应该怎么做呢?如何将出错信息返回给调用者?我们可以加一条if语句进行判断,检查一下用户的输入!

第一种方法:返回值

    规定:返回-1表示非法字符,-2表示超出范围(如果可以返回负数时,此方法不可行)

Java基础 异常(一)——出错处理(异常之前)_第3张图片
加一条if语句判断

第二种方法:添加属性(标识法)

    private int status = 0;

    status为0表示转换正常;-1表示非法字符;-2表示超出范围


Java基础 异常(一)——出错处理(异常之前)_第4张图片
判断字符

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


Java基础 异常(一)——出错处理(异常之前)_第5张图片
溢出情况

这时,main函数应该修改为


Java基础 异常(一)——出错处理(异常之前)_第6张图片
main

这样,大致能达到我们的要求。

    当错误情况发生时,这里给出的是一种普通的解决办法(不一定是最好的办法),也可以使用异常机制(Java对异常处理机制比较完善),当对程序的健壮性要求较高,需求较大时,我们就应该考虑异常机制了(下节见)。

注:

    1、这里我们讨论的错误指“可预期的出错情况”!

    2、为什么不一定是最好的办法?

    在大型程序下,对于一些较多的预期错误等情况下,可优先考虑使用Exception机制,方便管理。但这种机制并不是没有缺点,比如,通常情况下资源需求比这节的出错处理方法要多,耗时较高,Exception也就不能滥用。所以,对于一些小错误下,可考虑使用这节所说的出错处理方法。

你可能感兴趣的:(Java基础 异常(一)——出错处理(异常之前))