簡體   English   中英

Java中引發異常

[英]Exception throws in java

我剛剛開始自學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

一個示例是,如果您要從列表末尾開始並遞減索引,以讀取列表中的后備詞。

假設您沒有設置正確的條件來結束循環...這將導致負索引和超出范圍的異常。

在此特定示例中,采用當前設置代碼的方式不可能獲得負索引。

例:

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

在您的循環中,它不能。

但是,如果您更改了:

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

至:

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

那么i將小於0,因此list.get(i)將引發異常。

如所寫,您的代碼將永遠不會遇到負索引。 實際上,即使列表為空,也永遠不會遇到負索引的情況,也不會超過列表的最大容量。

如果您做一些愚蠢的事情,則會發生此特定異常( IndexOutOfBoundsException ),例如使用負索引將值從列表中拉出:

list.get(-1);

...或者更好的是,如果您走出列表的邊緣(這是很常見的):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM