Mittwoch, 18. April 2012

Fehlerbehandlung mit try, catch und finally

Manchmal wünscht man sich das Leben wäre so einfach wie es manchmal in der Programmierung ist.
Passiert ein Fehler oder tritt ein unerwarteter Zustand ein, dann ist man nicht auf
den normalen Ablauf beschränkt, sondern kann für diese Ereignisse spezielle
Behandlungen vorsehen. Die einfachen Zauberworte dafür lauten "try" und "catch".
Bevor Sie aber anfangen dies als Beschwörungsformel zu murmeln, hier der einfache
Code dazu.

Wir legen ein Array an und vergessen einem Element einen Wert zuzuweisen. Wer
der Meinung ist so etwas passiert ihm nie, kann alternativ einem Element den
Wert "null" zuweisen - das führt im Folgenden zum gleichen Ergebnis, bzw. Fehler.
class FehlerBehandlung {
  public static void main(String[] args) {

    String[] meldungen = new String[3];
    meldungen[0] = "irgendetwas";
    //Ups, wir haben die Deklaration von meldungen[1] vergessen!
    meldungen[2] = "Fehler";

    for (String wert : meldungen) {
      try {
      
        System.out.println("Wert: " + wert);
        //Das kennen wir doch? Der Wert "null" führt zu einem Fehler
        System.out.println( wert.equals("irgendetwas"));
        
      } catch (Exception e) {
      
        System.out.println("Ein Fehler ist aufgetreten!");
        System.out.println("Fehler " + e.getClass());
        System.out.println("Nachricht " + e.getMessage());
        
      } finally {
      
        System.out.println("Element fertig\n");
        
      } 
    }
  }
}
Tritt in dem "try"-Block ein Fehler auf wird an dieser Stelle die Ausführung beendet und der zugehörige "catch"-Block wird ausgeführt. Es kann sogar verschiedene "catch"-Blöcke geben in denen auf verschiedene Fehlertypen reagiert wird.

Optional kann man einen "finally"-Block anhängen, der in jedem Fall ausgeführt wird, egal ob es zu einem Fehler gekommen ist oder nicht.

Man sollte seine Programme aber dennoch so aufbauen, dass normale Zustände im Programm selbst berücksichtigt und abgearbeitet werden um unübersichtliche "try-catch" Orgien zu vermeiden.

Keine Kommentare:

Kommentar veröffentlichen