- 前言
- 一、任务介绍
- 1.任务描述
- 2.运行结果
- 3.任务目标
- 4.实现思路
- 二、程序实现
- 1.代码
- 2.实验结果(输出结果)
- 三、总结
编写程序,捕获并处理数组越界异常。
1、定义长度为10的数组,并赋初始值。
2、数组下标从0到10循环遍历数组,输出数组元素的值。
3、使用异常处理语句检测上述输出语句,控制程序正常退出
(1)然后在捕获处理时调用toString方法,实现以下运行效果。
(2)当满足产生异常对象条件时,结合throw抛出一个具体的由异常信息构建的ArrayIndexOutOfBoundsException异常对象。
然后在捕获处理时调用toString方法。
实现以下运行效果
如上所示
3.任务目标 学会利用try…catch…finally处理异常,控制程序正常退出。
掌握调用异常类的toString、getMessage、printStackTrace
相关方法输出异常信息。
掌握用异常信息组合成字符串再构造具体异常对象,然后结合throw将异常对象抛出的方法。
1、数组越界异常(IndexOutOfBoundsException)是运行时异常,程序员是可以不处理的,虚拟机可以处理,但处理的结果是非正常退出。故本题希望通过程序员自己处理,以便用来控制程序正常退出。
2、怎么处理呢?在整个输出数组的过程中,每一次访问数组元素,如果数组下标越界都可能出问题。我们想要的结果是只要第一次越界就报相应的异常信息,结束数组的整个访问。那就应该把整个for循环放到try中,结合catch进行捕捉处理。
3、如果只是要控制正常退出,那完全不用自定义异常类,因为Java里本身就有ArrayIndexOutOfBoundsException。
4、要获得一个具体的ArrayIndexOutOfBoundsException异常类对象,就需要调用ArrayIndexOutOfBoundsException异常类的有参构造方法,该方法接收一个字符串作为参数,那么我们就可以在发生异常时将引发异常的当前下标i和当前数组的长度值组合成一个串去构造就行。
public class Main {
public static void main(String[] args) {
int[] a=new int[10] ;
int i;
for(i=0; i<10; i++)
a[i] =i;
try{
for(i=0; i<=10; i++) {
if(i>=a.length){
throw new ArrayIndexOutOfBoundsException("当前要访问下标为:"+i+",数组长度为"+a.length+",发生数组越界异常");
}
else{
System.out.print(a[i]+" ");
}
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println();
System.out.println(e.toString());
}
finally {
System.out.println("由程序员负责处理越界异常");
2.实验结果(输出结果)
三、总结
- 如果在try里在数组遍历后写throw无法正确达到实验要求结果输出异常,因为异常后面的语句不会再执行
- 解决方法:加上判断语句,如果判断为异常直接抛出,如果不是就正常输出



