import java.io.*; public class Exceptionweiterreicher3 { public static void main(String[] args) { try { machEinenFehler(); } catch (NumberFormatException lala) { //dieser Zweig wird nie erreicht } catch (Exception meineEx) { System.out.println("Eine allgemeine Exception wurde erfasst"); } /* * Achtung: zuerst immer die spezialisierten Exceptions abfangen wie z.B. NumberFormatException * und ERST DANACH Oberklassen davon abfangen * bei umgekehrter Reihenfolge fängt "Exception" auch alle Unterobjekte ab, und somit auch die * NumberFormatException. Dadurch wird der unterste Zweig nie erreicht. */ System.out.println("Das Programm läuft nach Abfangen der Exception normal weiter."); } public static void machEinenFehler() throws FileNotFoundException //oder eine Superklasse von FileNotFoundException { machEinenFehler2(); } /* * entweder muss angegeben werden, dass die FileNotFoundException geworfen wird (throws ...) * oder sie muss gefangen werden (try - catch...) */ public static void machEinenFehler2() throws FileNotFoundException //oder eine Superklasse von FileNotFoundException { //Öffnen einer nicht existierenden Datei zum Lesen FileReader einleser = new FileReader("nichtExistierendeDatei.txt"); System.out.println("Die Methode wurde abgebrochen! - Das steht nicht mehr am Bildschirm"); } }