JavaScript Try ... Catch - Exceptions in JavaScript

Exceptions dienen der Reaktion auf aufgetretene und dem Auslösen von Ausnahmebehandlungen. Auf eine Exception kann reagiert werden, indem sie abgefangen (catch) wird. Im Catch-Bereich einer Ausnahmebehandlung wird auf den aufgetretenen Fehler reagiert, indem Aktionen ausgelöst werden, die den Zustand des Programms bereinigen. Auch werden hier oft Fehlermeldungen zur Information des Benutzers ausgegeben.

JavaScript Exception Beispiel 1: Ausnahmebehandlung in JavaScript

Folgendes Beispiel zeigt die Behandlung von Ausnahmen (exception handling) mit JavaScript. Die kritischen Aufrufe müssen hier innerhalb des Try-Blocks notiert werden. Im Beispiel wird der Zugriff auf eine nicht existierende Variable innerhalb von try gestartet. Das Ergebnis ist, dass eine Exception auftritt, auf die im Catch-Block entsprechend reagiert wird. Hier werden die Eigenschaften der Instanz des Exception-Objekts per write() ausgegeben. Hierzu bedient sich das Script der For-in-Schleife, die jede Eigenschaft der Instanz des Exception-Objekts durchgeht. Darauf folgt die Ausgabe von e, wobmit die Kurzform der Fehlermeldung ausgegeben werden kann. Auch hier kommt die Methode write des Document-Object zum Einsatz.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Einleitung des Exception-Handlings mit dem Schlüsselwort try
try {
  // Versuch der Ausgabe einer nicht definierten Variablen
  // führt zu einem Fehler.
  document.write (t);
}
// Einleiten eines Blocks, der ausgeführt wird, wenn eine Exception
// auftritt.
catch (e) {
  // Alle Eigenschaften der Exception-Instanz ausgeben
  for (i in e)
    document.write (i + ': ' + e[i] + '<br>');
  // In Kurzform gibt Exception eine Fehlermeldung aus
  document.write ('Fehler: ' + e + '<br>');
}
// -->
</script>

JavaScript Exceptions Beispiel 2: Werfen / Auslösen einer Exception (throw)

Zur Fehlerbehandlung mit Exceptions ist es auch möglich, eigene Exceptions zu implementieren. Hierzu erstellt man eine Klasse, die nach Möglichkeit einen bezeichnenden Namen trägt und – damit erkennbar ist, dass es sich um eine Exception-Klasse handelt – auf Exception endet. Eben dies geschieht im unten gelisteten JavaScript-Code. Dort wird die Exception-Klasse ZeroDivException definiert welche, wird sie ohne Angabe einer Meldung an den Constructor aufgerufen, mit einer vorgegebenen Fehlermeldung eine Fehlerbeschreibung enthält. Wird im Constructor eine Fehlermeldung in Form eines nicht leeren Strings angegeben, so wird im Falle einer aufgetretenen Exception diesen Typs die angegebene Fehlermeldung ausgegeben.

Auf die Definition der Exception-Klasse folgt die Definition einer Funktion, deren Aufgabe es ist eine Division durchzuführen. Da Division durch Null nicht definiert ist, soll die Funktion eine Exception werfen (auslösen), wenn b – also der Divisor – gleich Null ist. Ansonsten gibt die Funktion das Ergebnis der Division zur&uum;ck. Im unteren Block des Scripts wird die neu definierte Exception dann auf die Probe gestellt.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Eigene Exception-Klasse definieren
// Wird beim Aufruf des Construktors im ersten Parameter eine nicht leere Zeichenkette
// angegeben, so wird diese als Fehlermeldung der Instanz gespeichert.
function ZeroDivException (msg) {
  // Name der Exception
  this.name = 'ZeroDivException';
  // Fehlermeldung für die Exception
  // Wird eine individuelle Fehlermeldung in Form eines Strings als
  // Parameter des Constructors angegeben, so wird diese Fehlermeldung
  // in der Eigenschaft message gespeichert. Anstonsten wird eine
  // zur Exception passende Standardfehlermeldung gespeichert.
  this.message = msg === 'string' && msg.length != 0 ? msg : 'Division durch Null!';

  // Methode toString wird automatisch aufgerufen, wenn eine Ausgabeoperation
  // mit einer Variablen, die eine Instanz von ZeroDivException ist, getätigt
  // wird.
  this.toString = function () { return this.name + ': ' + this.message }
}

// Funktion dividiert a durch b und gibt das Ergebnis zurück
function div (a, b) {
  if (b == 0)
    // Division durch Null ist nicht definiert
    // Exception mit Standardmeldung auslösen
    throw new ZeroDivException ();
  // Operation durchführen und Ergebnis liefern
  return a / b;
}

// Try-Catch-Block zum Abfangen von Exceptions einleiten
try {
  // Folgender Aufruf ist noch korrekt
  document.write ('10 / 2 = ' + div (10, 2) + '<br>');
  // Der nächste führt zu einer Exception
  document.write ('5 / 0 = ' + div (5, 0) + '<br>');
} catch (e) {
  // Eine Exception ist aufgetreten und wir informieren
  // den Benutzer darüber mit einer Fehlermeldung
  document.write ('Exception aufgetreten: ' + e);
}
// -->
</script>

Letzte Posts aus unserem Forum

Probleme mit iphone

Hallo, ich habe ein Problem bei der Darstellung einer Webseite. In allen Browsern hat das bisher bestens funktioniert außer beim iPhone und iPad, wo ... » mehr

von Finlay am Dienstag, 10. Juli 2012 19:45 in JavaScript - noch nicht beantwortet

Stream musik

Hallo, ich bin auf der Suche nach einem Script, mit dem ich einen Leser für Audio-Spuren in eine Html-Webseite einfügen kann. Ich brauche dabei ... » mehr

von Finlay am Sonntag, 22. Januar 2012 22:52 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Dienstag, 8. Mai 2012 16:04 von maharadja

ich habe das mal mit jplayer probiert und bei mir gings ... » mehr

Byte Array PDF im Browser anzeigen

Hallo, ich bekomme von einem Webservice ein PDF als Byte Array. Mit einem JsonP Request habe ich das Byte Array so wie es ist (als Array von Bytes) ... » mehr

von TiloS am Mittwoch, 11. April 2012 17:37 in JavaScript - noch nicht beantwortet

Überbelnd effect in javascript gallerie

ich habe hier einie gallerie die funktioniert problem los aber hat noch kein über belnd effect jedoch würde ich diesen gerne einfügen aber ich habe ... » mehr

von faebe am Freitag, 20. Januar 2012 20:19 in JavaScript - noch nicht beantwortet

XML per JavaScript verarbeiten - IE

Hallo! Vielen Dank für das super kommentierte Script-Beispiel zur Weiterverarbeitung von XML-Dateien per JavaScript: ... » mehr

von gn0me am Freitag, 11. März 2011 19:03 in JavaScript - noch nicht beantwortet


¬ Insolvenzrecht