Exceptions - ausgeführte Zeilen

TaxiDriver

Mitglied
Code:
   try{
       String s = "Some text";
       char letter = s.toCharArray()[20];
       someVeryImportantMethod();
       System.out.println("Letter was: "+letter);
   }catch(NullPointerException nullPtrException){
            nullPtrException.printStackTrace();
   }catch(ArrayIndexOutOfBoundsException indexException){
            indexException.printStackTrace();
   }

Aufgabe: Welche der folgenden Zeilen wird ausgeführt, bzw. nicht ausgerührt?

System.out.println("Letter was: "+letter); // wird nicht ausgeführt
nullPtrException.printStackTrace(); // wird nicht ausgeführt
someVeryImportantMethod(); // wird nicht ausgeführt
indexException.printStackTrace(); // wird ausgeführt
char letter = s.toCharArray()[20]; // wird ausgeführt

Kann mir bitte jemand Erklären warum ausgeführt wird oder nicht?
Danke
 
Zuletzt bearbeitet:
Java:
char letter = s.toCharArray()[20];
wird ausgeführt.

s.toCharArray gibt dir ein Array der Länge 9 zurück. Du versuchst aber auf den Index 20 zuzugreifen (der existiert aber nicht). An dieser Stelle wird also eine ArrayIndexOutOfBoundsException geworfen, der Rest des try-Blocks wird nicht mehr ausgeführt und man sprint direkt in den catch-Block der zugehörigen Exception. Darin wird dann nur der StackTrace geprinted.
 
Also wird try nur so lange ausgeführt bis es zu einem Fehler kommt. Inklusive der Verursacher?

catch(bla) inkl. block nur wenn es zum Fehler kommt.
 
Wenn es exklusive dem Verursacher wäre, dann würde ja garkein Fehler auftreten 😉
Also der Verursacher wird immer ausgeführt, da dieser ja erst den Fehler verursacht.

Und dann wird direkt in den catch-Block gesprungen, ja.
 
Ja, der try Block wird ausgeführt bis es zu einer Exception kommt. Der Verursacher muss dabei erst ausgeführt werden, denn sonst kann der Fehler ja nicht auftreten. Wichtig ist: Beim Auftreten der Exception bricht der Verursacher natürlich auch ab.

Ein catch-Block wird natürlich nur aufgerufen wenn eine passende Exception ausgelöst wurde. So wird der catch-Blöock für die NullPointerException nicht ausgeführt, denn es gab ja keine NPE.
 

Neue Themen


Zurück
Oben