8. JavaScript - Fehlerbehandlung

8.1. try-catch
8.2. try-catch-finally
8.3. throw

8.1. try-catch

try-catch versucht einen Befehlsblock auszuführen. Mißlingt dies aufgrund eines logischen Fehlers, wird die beim Auftreten des Fehlers "geworfene" Ausnahmemeldung abgefangen und kann verarbeitet werden. Dies geschieht in der Form try {Block} catch (Ausnahmemeldung) {Block}.
Dadurch wird auch verhindert, daß eine Fehlermeldung auf der JavaScript-Konsole des Browsers erscheint. Gegen Syntax-Fehlermeldungen hilft dieses Vorgehen nicht.
function bullshit1()
{
  try
  {
    nicht_vorhandenes_objekt.fiktives_attribut=3;
  }
  catch (e)
  {
    window.alert("Fehler abgefangen: "+e);
  }
}

Die Funktion bullshit1 verursacht einen Laufzeitfehler, indem sie auf das nicht vorhandene Objekt nicht_vorhandenes_objekt zuzugreifen versucht.
Dieser Fehler wird mittels try und catch abgefangen und die zugehörige Meldung als Alert-Box angezeigt.


8.2. try-catch-finally

try-catch-finally versucht einen Befehlsblock auszuführen. Mißlingt dies aufgrund eines logischen Fehlers, wird die beim Auftreten des Fehlers "geworfene" Ausnahmemeldung abgefangen. Abschließend wird auf jeden Fall der auf finally folgende Block ausgeführt. Dies geschieht in der Form try {Block} catch (Ausnahmemeldung) {Block} finally {Block}.
function bullshit2(causeException)
{
  var exceptionCode="";
  var vielleicht_vorhandenes_array;
  if (!causeException)
    vielleicht_vorhandenes_array=new Array();
  try
  {
    vielleicht_vorhandenes_array[0]=3;
  }
  catch (e)
  {
    exceptionCode=e;
  }
  finally
  {
    if (exceptionCode)
      window.alert("Fehler abgefangen: "+exceptionCode);
    else
      window.alert("alles glatt gelaufen");
  }
}

Die Funktion bullshit2 verursacht einen Laufzeitfehler, wenn sie mit dem Argument true aufgerufen wird, sonst nicht. Am Ende wird eine Meldung ausgegeben, die entweder den Fehlercode oder eine Bestätigung enthält.


8.3. throw

Man kann seine Scripts auch eigene Laufzeitfehler werfen lassen. Dies wird durch throw Fehlermeldung erreicht.
function wirf()
{
  throw "Laufzeitfehler: nur zum Spass";
}

function bullshit3()
{
  try
  {
    wirf();
  }
  catch (e)
  {
    window.alert("Fehler abgefangen: "+e);
  }
}

Die Funktion bullshit3 ruft die Funktion wirf auf, die einen Laufzeitfehler "wirft", fängt diesen ab und zeigt ihn in einer Alert-Box an.


Autor: Ulrich Kritzner