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

Script Schrift vergrößern

Hallo wollte gerade das Script für die Schriftvergrößerung testen, aber irgendwie bekomme ich das nicht hin. Habe eine Joomla Website und dort die ... » mehr

von Gast am Donnerstag, 22. April 2010 13:32 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 22. April 2010 18:05 von alm

Hallo, damit kann man nicht allzu viel anfangen. Soviel ich weiss kann es zuweilen Probleme mit Tabellen-Layouts geben. Dort werden die ... » mehr

Javascript Schriftengröße: Problem bei URL-Übergabe im IE8

Hallo, ich hab eben das Javascript zur Schriftengröße eingebaut, klappt auch wunderbar auf Firefox, aber der IE 8 hat folgendes Problem: - wenn ich ... » mehr

von horst1234 am Dienstag, 23. Februar 2010 13:06 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Dienstag, 23. Februar 2010 14:07 von horst1234

Ich hab das charset im Header geändert (wie in der beispiel.html), und schon klappt es ... » mehr

Dynamisches einfügen von Zeilen in eine Spalte

Hallo, ich möchte gerne eine Zeile zwischen zwei andere Zeilen einfügen. Leider klappt folgender Versuch noch nicht so richtig. Vielleicht kann mir ... » mehr

von Bluecaspar am Mittwoch, 10. Februar 2010 18:09 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Donnerstag, 11. Februar 2010 10:37 von Bluecaspar

Ja genau, das war der Fehler. Vielen Dank Alex. Hier der korrigierte Code: <html> <head> <title> Test ... » mehr

Fenster in Frame erzeugen

Hallo, ich würde gerne ein Fenster in einer Webseite erzeugen. Das Fenster sollte dabei auf ein Frame begrenzt sein, sich also nicht aus diesen ... » mehr

von Bluecaspar am Dienstag, 9. Februar 2010 13:57 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Mittwoch, 10. Februar 2010 09:32 von Bluecaspar

Ja hervorragend, dass ist genau das was ich möchte. Danke ... » mehr

Problem: Kombination mit Lightbox 2

Hallo, ich bin gerade dabei die Galerie mit der Lightbox 2 zu verknüpfen, da ich die Bilder im Vollformat gerne in diesem schicken aufpoppenden ... » mehr

von GoPeter am Montag, 16. November 2009 23:38 in JavaScript - bisher 16 Antworten
Letzter Beitrag: Mittwoch, 18. November 2009 00:32 von GoPeter

Soo...hat lange gedauert...aber jetzt ist es endlich ... » mehr



¬ Insolvenzrecht