2017-02-02 4 views
2

Ich lerne über Ausnahmen in Java. Ich bin auf folgendes Problem gestoßen:Können wir "catch" verwenden, um OutOfBoundsException mit einem bestimmten Wert zu behandeln?

String bigstring = myscanner.nextLine(); 
String[] splited = bigstring.split("\\s+"); 
try { 
    smallstring1 = splited[0]; 
    smallstring2 = splited[1]; 
    smallstring3 = splited[2]; 
} catch(java.lang.ArrayIndexOutOfBoundsException exc) { 
    smallstring3 = null; 
} 

Dies würde funktionieren, wenn der Benutzer nur 2 Wörter eingeben möchte.

Was ist, wenn er ein Wort eingeben möchte?

Können wir irgendwie einen Wert angeben, den wir nach dem Doppelpunkt falsch erhalten?

Like:

java.lang.ArrayIndexOutOfBoundsException: 2 

oder

java.lang.ArrayIndexOutOfBoundsException: 1 

Können wir irgendwie (für dieses Beispiel) dieses "2" oder "1" in try/catch-Block?

Antwort

1

Sie sollten wahrscheinlich keine Ausnahmen für den normalen Programmablauf verwenden. Ausnahmen sollten normalerweise "außergewöhnlich" sein.

Wie auch immer, obwohl Sie das nicht können, können Sie if-Anweisungen in Ihrem catch-Block verwenden. Sie können auch überprüfen, splited.length, wie groß das Array ist.

2

java.lang.ArrayIndexOutOfBoundsException ist keine Ausnahme, die wiederherstellbar ist. Es vermittelt einen Programmierfehler.
Anstatt zu versuchen, den Index zu verstehen, der das Problem im Catch verursacht, sollten Sie eher sicherstellen, dass die Ausnahme nicht auftritt.

In Ihrem Fall sollten Sie die Größe des Arrays überprüfen, bevor Sie versuchen, den Wert davon zu erhalten. Hier

ein Beispiel:

int arraySize = splited.length; 

    if (arraySize == 3){ 
     smallstring1=splited[0]; 
     smallstring2=splited[1]; 
     smallstring3=splited[2]; 
    } 

    else if (arraySize == 2){ 
     smallstring1=splited[0]; 
     smallstring2=splited[1]; 
    } 

    else if (arraySize == 1){ 
     smallstring1=splited[0]; 
    } 
Verwandte Themen