8 Programmablauf bei unterschiedlichen try-catch Blöcken

Submitted by javafrage on Fri, 01/25/2013 - 09:07

Hinweis: Die Implementierung der Frage 2 unterscheidet sich nur in den benutzten Ausnahmen von der Frage 2.52!

Welche der beiden catch Blöcke werden im folgenden Programm durchlaufen? Welche Ausgaben erzeugt das folgende Programm?

package s1.block10;

public class Frage7 {

   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: Division durch Null");
      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: Division durch Null");
         d = -1;
      }
      System.out.println("divide:after");
      return d;
   } // Ende main()
} // Ende der Klasse

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

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

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

Es wird nur der try-catch Block in divide() aufgerufen:

main:before
doubleDiv:before
divide:before
divide: Division durch Null
divide:after
doubleDiv:after
main:after