数组越界异常无法捕获?请指教,谢谢!

monalions 2007-10-31 05:05:44
各位师傅前辈们:
我是一个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]);
}
}
}
谢谢各位,请指教!还有因为我是新手,有什么地方做得不好或没说清楚的,请大家见谅!
...全文
479 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
monalions 2007-11-02
  • 打赏
  • 举报
回复
再次感谢,分数不多,略表心意!
yanbilian 2007-11-02
  • 打赏
  • 举报
回复
点管理帖子,然后给每个人分数就可以啦
monalions 2007-11-02
  • 打赏
  • 举报
回复
对不起,还得问一下,怎么结贴给分呀?我找不到结贴的按钮呀,还有也没看见怎么给分,麻烦那位大哥在给指点一下。实在不好意思,谢谢!
luyang1016 2007-11-01
  • 打赏
  • 举报
回复
结贴给分吧
yanbilian 2007-11-01
  • 打赏
  • 举报
回复
呵呵,来晚了,解决了就好啊
monalions 2007-11-01
  • 打赏
  • 举报
回复
是的,确实是我没弄清楚这个地方。改完后就好了,多谢指点!
piaopiao11 2007-10-31
  • 打赏
  • 举报
回复
因为你catch里面调用了e.printStackTrace();

catch后的异常会被打出来,但程序还是会继续运行的,代码没有问题。

58,446

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧