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.
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>
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>
¬ Menu
¬ Gratis Download
¬ Seminare
¬ Yoga
¬ Insolvenzrecht
¬ News
15.08.2008Schleifen in PHP: Die While-Schleife » mehr 13.08.2008Nutzung von Variablen unter PHP: Definition, Sichtbarkeit und vordefinierte Variablen » mehr 11.08.2008Ausgabe von Datum und Zeit mit PHP nach Konvertierung in ein String » mehr Eine vollständige News-Liste ist auf der News-Seite zugänglich.
¬ Foren
¬ Buchtipp
JavaScript, m. CD-ROM - Einstieg für Anspruchsvolle
Weitere JavaScript Literaturtipps finden Sie unter JavaScript Bücher
Webdesign •
Beratung Internetseite •
Programmierung Internetseite