10.3.3 抛出异常
通常情况下,异常是由系统自动捕获的。但程序员也可以自己通过throw语句抛出异常。
throw语句的格式为:
throw new 异常类名(信息)
其中异常类名为系统异常类名或用户自定义的异常类名。“信息”是可选信息。如果提供了该信息,toString()方法的返回值中将增加该信息内容。
【例10-2】捕获多个异常。
【程序说明】
本程序中第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程序结束!