JavaScript Try-Catch

Try-Catch Fehlerbehandlung in JavaScript



Fehlerbehandlung mit Try-Catch
Im Programmablauf kann nicht immer sichergestellt werden, ob ein Programmstück korrekt abläuft.

Nehmen wir an, wir schreiben ein Programm, welches zwei Zahlen multipliziert. Die Zahlen sollen als Eingabe über den Benutzer geschehen. Dieser könnte theoretisch anstatt Zahlen zwei Zeichenketten eingeben, weshalb es für uns etwas schwierig werden würde daraus das Produkt der beiden Zahlen zu bilden!

Für solche und auch andere denkbare Situationen gibt es in JavaScript (genauso wie in vielen anderen Programmiersprachen) eine Try-Catch Fehlerbehandlung, um bei einem Fehlerfall das Programmstück mit einer Behandlung zu versehen (Ausgabe einer Fehlermeldung etc.)


Allgemein
Die Allgemeine Form einer Try-Catch-Anweisung beinhaltet folgende Elemente:

* try = Kritischer Bereich der abgefangen werden soll
* catch = Bereich der abgearbeitet werden soll, wenn kritischer Bereich Fehler auslöst
* finally = (Optionaler) Bereich, der immer ausgeführt wird
* throw = (Optionaler) Hiermit kann selbst ein Fehler mit Fehlerbeschreibung ausgelöst werden

try
{
  // Kritischer Bereich
}
catch( Ausdruck )
{
  // Fehlerbehandlung
}
try
{
  // Kritischer Bereich
}
catch( Ausdruck )
{
  // Fehlerbehandlung
}
finally // (optional)
{
  // Anweisung die immer ausgeführt wird,
  // egal ob Fehler auftritt oder nicht
}
 
 
try
{
  // Kritischer Bereich
  // mit eigener Fehlerbeschreibung per throw
  if(x == 'a')
    throw "a ist keine Zahl"; // Eigener Fehler wird ausgelöst
}
catch( Ausdruck )
{
  // Fehlerbehandlung
}
 
 
Programmbeispiel
Dieses Codebeispiel fängt den >>kritischen Bereich<< (Multiplikation zweier Zeichen) im >>Try-Block<< ab und führt den >>Catch-Block<< aus.

Im Catch-Block wird das >>Error<<-Objekt angelegt. Mit Error.message kann die vom Browser generierte Fehlerbeschreibung ausgegeben werden. Da die Fehlerbeschreibung vom Browser abhängig ist, ist natürlich auch dessen Fehlertext Browserspezifisch!
<script type="text/javascript">
 
  trycatch(); // Funktion aufrufen
 
 
  function trycatch()
  {
     // Würde der Aufruf hier erfolgen, würde das gesamte Programm
     // nach der Ausführung von document.write(...) crashen!
    //document.write( eval("a * b") );
 
 
    try
    {
      document.write( eval("a * b") ); // Fehler entsteht und wird abgefangen
    }
    catch(Error) // Error-Objekt im catch-Block
    {
      document.write(Error.message); // Fehlermeldung ausgeben
    }
 
 
    // ...Weiterer Programmablauf...
    document.write("<br />Weiterer Programmablauf");
  }
 
</script>