/************************************************************/
/* Prof. Dr. Carsten Vogt                                   */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                   */
/* http://www.nt.fh-koeln.de/vogt                           */
/*                                                          */
/* Das Programm demonstriert die Ausnahmebehandlung bei     */
/* Einsatz von mehr als einem Handler: Je nach Art des Aus- */
/* nahmeereignisses wird unterschiedlich reagiert.          */                                              
/************************************************************/

import java.io.*;

public class MehrHandler {

 public static void main(String[] args) {

  int[] feld = {0,1,2,3,4};
  
  System.out.println();

  for (int i=-2;i<=6;i++) {

   System.out.print("12/"+i+" = ");

   try {

    System.out.println(12/feld[i]);
     /* Bei dieser Operation koennen zwei Ausnahmeereignisse
        auftreten (Array-Index-Fehler, Division durch 0), die
        gesondert abgefangen werden. */

   } catch (IndexOutOfBoundsException e)
        /* Handler für Index-Fehler */
      { System.out.println("FEHLER bei Array-Indizierung"); }

     catch (ArithmeticException e)
        /* Handler für arithmetischen Fehler (hier: Division durch 0) */
      { System.out.println("FEHLER bei arithmetischer Operation"); }

     catch (Throwable e)
        /* Handler für ein sonstiges Ausnahmeereignis: Er "passt" fuer alle
           Ausnahmen, da Throwable Oberklasse von allen Ausnahmeklassen ist.
           Daher muss er stets als letzter Handler angegeben werden,
           da sonst alle folgenden nie erreicht wuerden.
           Um das Verhalten zu testen, kann man in diesem Programm einen
           der beiden vorherigen Handler auskommentieren. */
      { System.out.println("FEHLER sonstiger Art"); }

  }

 }

}

