10万次循环里大概有100次会出现数组越界,通常在catch语句里重新调用doSomething方法即可成功解决;
但是有1到2次数组越界无法跳出catch,而且无法预见,在catch里重新调用doSomething方法无法跳出异常,把数据单独提取出来也找不出原因来,由于这种数据很少出现,所以可以忽略不计,也不想浪费时间研究数组方面的问题,但是循环进行到这个数据的时候就是死循环了,问有好的方法可以跳出这次循环,进入下一次循环?public class A{ public static void main(String[] args){
new Thread(new B()).start();
}
}public class B implements Runnable{
public B(){} public void run(){ for(int a=0;a<100000;a++){
C.doSomething(a);
}
}
}public class C{
public static void doSomething(int a){
try {
//主要代码隐藏
}catch (IndexOutOfBoundsException e){
//处理数组越界异常
C.doSomething(a);
}
}
}
但是有1到2次数组越界无法跳出catch,而且无法预见,在catch里重新调用doSomething方法无法跳出异常,把数据单独提取出来也找不出原因来,由于这种数据很少出现,所以可以忽略不计,也不想浪费时间研究数组方面的问题,但是循环进行到这个数据的时候就是死循环了,问有好的方法可以跳出这次循环,进入下一次循环?public class A{ public static void main(String[] args){
new Thread(new B()).start();
}
}public class B implements Runnable{
public B(){} public void run(){ for(int a=0;a<100000;a++){
C.doSomething(a);
}
}
}public class C{
public static void doSomething(int a){
try {
//主要代码隐藏
}catch (IndexOutOfBoundsException e){
//处理数组越界异常
C.doSomething(a);
}
}
}
回复内容太短了!
public static void doSomething(int a){
try {
//主要代码隐藏
}catch (IndexOutOfBoundsException e){
//处理数组越界异常
C.doSomething(a); continue; }
}
}
try {
//主要代码隐藏
}
就是说 你C.doSomething()出现exception但是在处理exception的程序中你又去C.doSomething(),然后又一次Exception...这样无限往复就死循环了。理论上应该会栈益出。解决办法就是不要在catch中递归调用C.doSomething()。而是直接写一段程序,放在这里来处理这种情况,至少打印出不同的出错信息,这样方便你判断到底是哪里出现异常。其实最后你要考虑清楚,出现异常状况你到底要怎么处理。忽略不计?还是一定要处理?