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

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 1 Antwort
Letzter Beitrag: Montag, 23. Januar 2012 17:02 von alm

Hallo, wenn es um einen MP3-Player geht, dann sollte jplayer das Richige sein. Einfach mal den Suchschlitz der Suchmaschine Deiner Wahl nutzen. ... » mehr

Ü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

Galerie Erweiterung

Hi, zu erst mal ein Lob an Eure Galerie. Nun habe ich allerdings eine Frage um die Galerie eventuell zu erweitern. Derzeit wird auf meiner Seite ... » mehr

von G-RuN am Dienstag, 25. Januar 2011 17:13 in JavaScript - bisher 8 Antworten
Letzter Beitrag: Dienstag, 1. Februar 2011 17:11 von G-RuN

Hat sich erledigt. Mir haben noch die Zuweisung von der Variablen anzahl_bilder und anzahl_thumbnails gefehlt. Grüße, ... » mehr

bei submit ein neues Fenster öffnen

Hallo, ich habe hier ein kleines Problem und ... » mehr

von Kallchen am Freitag, 14. Januar 2011 23:07 in JavaScript - bisher 3 Antworten
Letzter Beitrag: Samstag, 15. Januar 2011 12:47 von alm

window.location = "_blankeineseite.html"; Das funktioniert auf keinen Fall. Die Location-Eigenschaft muss eine URL enthalten und wird bei ... » mehr



¬ Insolvenzrecht