为什么没有抛出异常?

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");
        }
  }