10.3.3 抛出异常

10.3.3 抛出异常

通常情况下,异常是由系统自动捕获的。但程序员也可以自己通过throw语句抛出异常。

throw语句的格式为:

throw new 异常类名(信息)

其中异常类名为系统异常类名或用户自定义的异常类名。“信息”是可选信息。如果提供了该信息,toString()方法的返回值中将增加该信息内容。

【例10-2】捕获多个异常。

img443

img444

【程序说明】

本程序中第13行到35行为try语句,包含三个catch子句和一个finally子句。第18~21行用于处理命令行输入格式不合规定的例外情况,根据SumUp程序规定执行时一并从键盘输入一个正整数到args[0],若没有输入一个正整数,则数组args[ ]中并没有元素,但却试图将args[0]转换为整数,这时产生数组索引值超出范围ArrayIndexOutOfBoundsException的例外,其异常处理的方式只是显示:

命令行应为:  java SumUp <number>

告诉用户输入格式不对而已。

第22~25行用于处理命令行输入参数不合规定的异常情况,根据SumUp程序规定应该输入一个正整数,若输入非整数时将产生NumberFormatException的异常,其异常处理的方式只是显示:

参数<number>应为整数

告诉用户输入参数不对而已。这是执行字符串转换为整数,因args[0]不是整数而引起的异常情况。

第26-29行用于处理命令行输入参数不合规定的异常情况,根据SumUp程序规定应该输入一个正整数,若输入负整数时在sum()方法中将丢出一个IllegalArgumentException的异常,其异常处理的方式只是显示:

参数错误!其后跟着错误信息

这是执行sum()方法,因为n不是正整数而引起的异常情况。

try语句不管有没有异常情况最后都要执行finally子句,显示:

错误!未找到引用源。

Sumup.java程序结束!