抛出异常抛出java

时间:2013-12-05 03:23:44

标签: java exception exception-handling

我刚开始自学java,目前正在学习如何抛出异常。我正在查看的在线教程说,在SECOND粗线(list.get(i)),如果I的值小于0或太大,可能会导致异常。我理解它可能太大了,但值怎么可能小于0?在什么情况下会发生这种情况?

private List<Integer> list;
    private static final int SIZE = 10;

    public ListOfNumbers () {
        list = new ArrayList<Integer>(SIZE);
        for (int i = 0; i < SIZE; i++) {
            list.add(new Integer(i));
        }
    }

    public void writeList() {
        PrintWriter out = new PrintWriter(**new FileWriter("OutFile.txt")**);

        for (int i = 0; i < SIZE; i++) {
            out.println("Value at: " + i + " = " + **list.get(i)**);
        }
        out.close();
    }
}

全部直接来自底部附近的http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html

3 个答案:

答案 0 :(得分:0)

一个例子是,如果您正在读取列表后缀,从最后开始并递减索引。

假设您没有设置正确的条件来结束循环...这将导致负索引和越界异常。

在此特定示例中,无法按照当前设置代码的方式获取负索引。

示例:

for(int i = list.size(); i>= -1; i--){
    list.get(i);
}

答案 1 :(得分:0)

在你的循环中,它不能。

但如果你改变了:

for (int i = 0; i < SIZE; i++) {

为:

for (int i = -1; i < SIZE; i++) {

然后i将小于0,因此list.get(i)将引发异常。

答案 2 :(得分:0)

如上所述,您的代码永远不会遇到负面索引。实际上,即使列表为空,也绝对不会遇到负面索引的情况,也不会超过列表的最大容量。

如果你做了一些愚蠢的事情,比如使用负面索引从列表中提取一个值,就会发生这个特殊的异常(IndexOutOfBoundsException):

list.get(-1);

......或者更好的是,如果你离开列表的边缘(这是更常见的):

list.get(SIZE); // invalid - you can only get up to SIZE - 1