数组越界异常无法捕获?请指教,谢谢!
各位师傅前辈们:
我是一个Java的初学者,这次请教的问题比较幼稚,希望你们大家不要笑话,并请给我一些指导!
最近我写程序,偶然遇到一个数组下标越界的异常,我想为了整段程序不因一个异常而中断,就用try/catch来捕获它,但后来发现捕获后,catch里的程序都运行了,但后台还是报下标越界异常,不知是忽略了哪个细节还是哪里的知识点没有弄清楚。下面就是我的示意程序代码:
package com.chen.test;
public class ArrayExceptionTest
{
public static void main(String[] args)
{
ArrayExceptionTest.arrayExceptionTest();
}
public static void arrayExceptionTest()
{
int[] arrayInt1 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21};
int[] arrayInt2 = new int[7];
System.out.println("array1 的长度是 "+arrayInt1.length);
System.out.println("array2 的长度是 "+arrayInt2.length);
//纯为测试我在另外一处遇到的异常无法捕获的疑问题
//不知是忽略了哪个细节还是哪里的知识点没有弄清楚
//当arrayInt1拥有21个元素,那就是一个正常情况,
//但删除了一个数后,按照当前方法,数组必会越界,
//但用try/catch却捕获,catch已经运行,但后台还
//是报下标越界异常……
try
{
for(int i=0;i<arrayInt1.length;i=i+3)
{
String temp = "";
temp = ""+arrayInt1[i]+""+arrayInt1[i+1]+""+arrayInt1[i+2];
arrayInt2[i/3]=Integer.parseInt(temp);
}
}
catch(ArrayIndexOutOfBoundsException e)
{
e.printStackTrace();
System.out.println("数组下标越界捕获! catch已经运行。");
}
for(int i=0;i<arrayInt2.length;i++)
{
System.out.println("array2["+i+"] = "+arrayInt2[i]);
}
}
}
谢谢各位,请指教!还有因为我是新手,有什么地方做得不好或没说清楚的,请大家见谅!