此代码中发生了哪种类型的异常
为什么catch语句没有采用ArrayOutofBoundsException e
。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
int i,j,k,n,m,l,x,y;
Scanner sc=new Scanner (System.in);
n=sc.nextInt();
ArrayList [] a=new ArrayList[n];
for(i=0;i<n;i++)
{
m=sc.nextInt();
a[i]=new ArrayList();
for(j=0;j<m;j++)
{
a[i].add(sc.nextInt());
}
}
k=sc.nextInt();
for(i=0;i<k;i++)
{
x=sc.nextInt();
y=sc.nextInt();
try
{
System.out.println(a[x-1].get(y-1));
}
catch(ArrayOutofBoundsException e)
{
System.out.println("ERROR!");
}
}
}
}
答案 0 :(得分:2)
由于您在程序中使用Array of ArrayList,
从java doc ArrayList获取方法
抛出: IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; = size())
和
在运行时检查所有数组访问;尝试使用索引 小于零或大于或等于的长度 数组导致抛出ArrayIndexOutOfBoundsException。
因此,您尝试在IndexOutOfBoundsException中一起抓住计划中的ArrayIndexOutOfBoundsException。
例如:
SwitchTypeSensor