2014-01-06 14 views
-2

如果有indexOutOfBoundException,是否有可能突破循環?例如:如何在出現indexOutOfBoundException時跳出循環?

int v = 987; 
int c = 783; 
int[] someArray = new int[23];  
    do{ 
    //do stuff 
    if(someArray[68] == indexOutOfBoundException){ // How can this be done? 
     break; 
    } 
    }while(v > c); 

我知道這someArray[68]本身就拋出一個錯誤,但可以防止被錯誤,只是打破了一個給定的循環?

+0

什麼是「例外」?你可以用他們做什麼? –

+0

傳說它如果沒有抓到它會爲你打爆 –

+5

你可以抓住它,但事先檢查一下'if(someValue

回答

1

爲什麼這不應該很難。只需添加try catch。

int v = 987; 
int c = 783; 
int[] someArray = new int[23];  
    do{ 
    //do stuff 
    int val; 
    try{ 
     val = someArray[68]; 
    }catch(Exception e) { 
     break; 
    } 
    // do some other operation with the val 
    }while(v > c); 

而順便說一句,這只是一個濫用try catch,即使這是一個解決方案,你不應該以任何方式使用它。

+1

At至少'catch'應該只捕獲'ArrayIndexOutOfBoundsException'。 –

+0

@HotLicks你是對的,但任何可能發生在這裏的異常(NullPointer或ArrayIndexOutOfBounds)對我來說似乎很荒謬。 – TwilightSun

+0

這兩個都不應該出現在第一個地方.. –

2

我想你在問什麼是否有辦法在引發異常之前打破循環。要做到這一點,你可以簡單地根據數組大小測試數組索引:

int v = 987; 
int c = 783; 
int[] someArray = new int[23];  
do{ 
    // do stuff 
    int arrayIndex = (some expression); 
    if (arrayIndex >= someArray.length) break; 
    int anotherValue = someArray[arrayIndex]; 
    // do something else 
}while(v > c);