为什么没有抛出异常?
Why the exception is not getting thrown?
下面是我的代码。当我 运行 时,我在线程“主”java.lang.IndexOutOfBoundsException 中得到 异常:索引:3,大小:2 而不是我的异常消息。谁能解释一下我做错了什么或为什么会这样?
谢谢!
Code
public class Main {
public static void main(String[] args) throws Exception{
ArrayList a= new ArrayList();
a.add(10);
a.add(20);
a.get(3) ;
throw new IndexOutOfBoundsException("sorry");
}
}
你的异常没有被抛出,因为它之前的行抛出异常并结束执行。 ArrayList 已经知道在尝试访问超出 List 大小的元素时抛出 IndexOutOfBoundsException 并且因为它没有被捕获,所以您的程序结束并且不会继续您的 throw 语句。
使用 try catch 块捕获此异常:
public static void main(String[] args){
try {
ArrayList a = new ArrayList();
a.add(10);
a.add(20);
a.get(3); //element with index 3 doesn't exists
} catch (IndexOutOfBoundsException e) {
throw new IndexOutOfBoundsException("sorry");
}
}
下面是我的代码。当我 运行 时,我在线程“主”java.lang.IndexOutOfBoundsException 中得到 异常:索引:3,大小:2 而不是我的异常消息。谁能解释一下我做错了什么或为什么会这样? 谢谢!
Code
public class Main {
public static void main(String[] args) throws Exception{
ArrayList a= new ArrayList();
a.add(10);
a.add(20);
a.get(3) ;
throw new IndexOutOfBoundsException("sorry");
}
}
你的异常没有被抛出,因为它之前的行抛出异常并结束执行。 ArrayList 已经知道在尝试访问超出 List 大小的元素时抛出 IndexOutOfBoundsException 并且因为它没有被捕获,所以您的程序结束并且不会继续您的 throw 语句。
使用 try catch 块捕获此异常:
public static void main(String[] args){
try {
ArrayList a = new ArrayList();
a.add(10);
a.add(20);
a.get(3); //element with index 3 doesn't exists
} catch (IndexOutOfBoundsException e) {
throw new IndexOutOfBoundsException("sorry");
}
}