尝试捕捉异常处理

时间:2018-09-05 12:33:08

标签: java

我一直在尝试使用Arraylist,但是这种方法似乎有效 我需要一个简单的示例来使用Java中的try catch块来索引超出范围的异常处理

这是我的代码,如何与try catch块集成以处理异常?

import java.util.ArrayList;

public class NewClass2 {

    public static void main(String[] args) {
        ArrayList<String> lis = new ArrayList<>();
        lis.add("My");
        lis.add("Name");
        // in the next line, an IndexOutOfBoundsException occurs
        System.out.println(lis.get(2));
    }
}

我也可以使用try catch来获取非法参数异常的示例

3 个答案:

答案 0 :(得分:2)

请勿尝试使用try / catch块来捕获异常。您可以检查要传递的索引是否为负数,或者是否大于或等于索引大小,并避免一开始就抛出异常。

the Javadoc of ArrayList.get(int)中所述:

  

[抛出] IndexOutOfBoundsException-如果索引超出范围(index < 0 || index >= size())

因此,只需在您的代码中进行检查:

if (i >= 0 && i < lis.size()) {
  // Do something for an index in bounds.
} else {
  // Do something for an index out of bounds.
}

仅对无法通过事先检查避免的情况使用异常处理。这在有效的Java 中有详细介绍;在第二版中,这是项目57:“仅在特殊情况下使用例外”。

答案 1 :(得分:0)

这是一个基本示例:

int[] num = {1, 3, 4, 5};

try {
    System.out.println(num[30]);
}

catch(ArrayIndexOutOfBoundsException e) {
    e.printStackTrace(System.out);
}

对于ArrayList:

try {
    ArrayList<String> lis = new ArrayList<String>();
    lis.add("My");
    lis.add("Name"); System.out.println(lis.get(2));
    }

catch(IndexOutOfBoundsException e) {
        e.printStackTrace(System.out);
    }

答案 2 :(得分:0)

许多人已经说过,您正在尝试访问仅包含2个元素的数据结构的第三个元素(索引= 2,索引从0开始)。

但是,您可以为此应用try-catch,例如:

public static void main(String[] args) {
    ArrayList<String> lis = new ArrayList<>();
    lis.add("My");
    lis.add("Name");
    // now you just try the access
    try {
        System.out.println(lis.get(2));
    // and especially handle the IndexOutOfBoundsException
    } catch (IndexOutOfBoundsException ex) {
        System.err.println("You are trying to access an index that is not available (out of bounds)!");
        ex.printStackTrace();
    }
}