9 Programmablauf bei mehreren catch Blöcken

9 Programmablauf bei mehreren catch Blöcken

Hier werden in der Methode divide() mehrere Ausnahmebehandlungen (catch Blöcke) zu dem gegebenen try Block angeboten. Welche Blöcke werden ausgeführt und warum? Wie sieht die Konsolenausgabe aus?

package s1.block10;

public class Frage9{
   public static void main(String[] args) {
      int a = 5;
      int b = 0;
      int c = 0;
      System.out.println("main:before");
      c = doubleDiv(a, b);
     System.out.println("main:after");
   }

   static int doubleDiv(int a, int b) {
      int d;
      System.out.println("doubleDiv:before");
      try {
         d = 2 * divide(a, b);
      } catch (RuntimeException e) {
         System.out.println("doubleDiv: RuntimeException");
         d = -2;
     }
     System.out.println("doubleDiv:after");
     return d;
   }

   static int divide(int a, int b) {
      int d;
      System.out.println("divide:before");
      try {
         d = a / b;
      } catch (IllegalArgumentException e) {
         System.out.println("divide: IllegalArgumentException");
         d = -1;
     } catch (ArithmeticException e) {
        System.out.println("divide: ArithmeticException");
        d = -2;  
     } catch (RuntimeException e) {
        System.out.println("divide: RuntimeException");
        d = -3;
     }
     finally {
        System.out.println("divide: geschafft");
     }
     System.out.println("divide:after");
     return d;
   } // ende main()
} // Ende Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 8: Programmablauf bei mehrern try-catch-Blöcken

Der try-catch Block in divide() wird nicht ausgeführt da keine IllegalArgumentException vorliegt. Erst der try-catch Block in der äusseren Methode doubleDiv() kommt zum Zug. Der letzte Dokumentationsaufruf in divide() wird daher nicht aufgerufen.

main:before
doubleDiv:before
divide:before
doubleDiv: Division durch Null
doubleDiv:after
main:after
javafrage Fri, 01/25/2013 - 09:20