ArrayIndexOutOfBoundsException - wyłuskanie wartości, dla której wywaliło wyjątek

Odpowiedz Nowy wątek
2018-12-03 21:59
0

Mam pytanie w jaki sposób z wyjątku złapanego przez:

catch (ArrayIndexOutOfBoundsException e) {
e.toString()
}

wyciągnąć wartość, która powoduje wyjątek? Nie mogę użyć size()/length. Mam taki wyjątek:

java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

i chcę do zmiennej wrzucić tą (w tym wypadku) 3.

edytowany 1x, ostatnio: Mattii4211, 2018-12-03 22:00

Pozostało 580 znaków

2018-12-03 22:54
0
Integer.parseInt(e.getMessage());

A po Ci to?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2018-12-03 22:55
0

Zadanie na ćwiczenia z Javy :(

bogdans napisał(a):
Integer.parseInt(e.getMessage());

A po Ci to?

Ale ten kod chyba jednak nie działa

edytowany 1x, ostatnio: furious programming, 2018-12-04 00:48
Zależy od wersji Javy. W tych nowszych faktycznie wyjątek jest bardziej opisowy, więc rzutowanie getMessage() na Integer się nie powiedzie. W Java 8 getMessage() to tylko 3, więc dla tej wersji zadziała. - jackweb 2018-12-03 23:07
A jakby to wyglądało w Javie >8 ? - Mattii4211 2018-12-03 23:08
Wyświetl sobie e.getMessage(), zobacz w którym miejscu jest błędna wartość, potnij komunikat i sparsuj odpowiedni fragment. Ale wtedy nie zadziała dla Javy 8. - bogdans 2018-12-03 23:15
Właśnie nie wiem dlaczego, ale w Eclipse (jdk 11) wybieram jre 1.8 a get message i tak zwraca: Index 3 out of bounds for length 3 - Mattii4211 2018-12-03 23:21

Pozostało 580 znaków

2018-12-04 06:48
0

Może nieumiejętnie wybierasz wersję jre. Dopisz do programu

System.out.println(System.getProperty("java.version"));

to się dowiesz. która wersja się uruchamia.
Spróbuj tak:

int badIndex = 0;
\\w catch(...)
String[] items = e.getMessage().split(" ");
if(items.length == 1)
{
    badIndex = Integer.parseInt(items[0]);
}
else
{
    badIndex = Integer.parseInt(items[1]);
}

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2018-12-04 08:12

Pozostało 580 znaków

2018-12-04 11:42
0

Faktycznie coś Eclipse się buntował i nie uruchamiał dla Javy 8 ale już wszystko działa także dzięki za pomoc :)

edytowany 1x, ostatnio: furious programming, 2018-12-04 13:30
Nie cytuj całego posta, jeśli odpowiadasz zaraz pod nim i do jego całości się odnosisz. - furious programming 2018-12-04 13:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0