我一直在尝试使用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来获取非法参数异常的示例
答案 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();
}
}