© saicle/Shutterstock.com
Error Handling in JavaScript

Error Handling in JavaScript


Webapplikationen leben von der Interaktion mit dem Benutzer. Und vor allem in dieser Umgebung kommt es immer wieder zu Ausnahmesituationen. Sei es, dass der Benutzer die Software anders verwendet, als der Entwickler es vorgesehen hat, oder ein Server nicht oder mit falschen Daten antwortet. An sämtliche dieser Situationen müssen Sie bei der Entwicklung Ihrer Applikation denken und Routinen vorsehen, die in der Lage sind, mit solchen Ausnahmen umzugehen.

HTML5-JavaScript-APIs

Gerade der Umgang mit Fehlern und Ausnahmen wird bei der Entwicklung von Webapplikationen häufig vernachlässigt. Doch wer es versäumt, bereits in der Entwicklung entsprechendes Error Handling zu berücksichtigen, läuft Gefahr, dass die Applikation unerwartet beendet wird, was meistens in einer Beeinträchtigung der Benutzung mündet. Aus diesem Grund erfahren Sie in diesem Artikel, welche Arten von Fehlern in einer JavaScript-Applikation auftreten können und wie Sie mit diesen Fehlern umgehen können. Außerdem möchte ich Ihnen einige Best Practices mit auf den Weg geben.

Fehlertypen in JavaScript

In JavaScript werden Sie mit verschiedenen Typen von Fehlern konfrontiert. Auf einige davon können Sie reagieren, auf andere nicht. JavaScript selbst verwendet sechs Basistypen von Fehlern. Diese leiten sich alle von einem allgemeinen Fehler, dem Error-Typ, ab. Diese sechs Fehlertypen lauten:

  • SyntaxError

  • EvalError

  • RangeError

  • ReferenceError

  • TypeError

  • URIError

Abbildung 1 zeigt Fehlermeldungen, die in der Konsole abgefangen werden.

springer_error_1.tif_fmt1.jpgAbb. 1: Konsole Fehlermeldung

SyntaxError

Der erste Fehlertyp in JavaScript, den ich Ihnen hier vorstellen möchte, ist der SyntaxError. SyntaxErrors treten auf, wenn Sie, wie der Name vermuten lässt, gegen die Sprachsyntax von JavaScript verstoßen. Vergessen Sie beispielsweise nach einer öffnenden geschweiften Klammer diese im Verlauf Ihres Skripts wieder zu schließen, führt dies zu einem SyntaxError. Ein SyntaxError kann nicht ohne Weiteres gefangen werden und führt aus diesem Grund zum Abbruch Ihrer Applikation.

EvalError

Ein EvalError wird verursacht, wenn die eval-Funktion von JavaScript nicht korrekt verwendet wird. Der ECMAScript-3-Standard sieht diesen Fehler vor, wenn eval indirekt aufgerufen wird – also wenn die Funktion eval einer anderen Variablen zugewiesen und dann aufgerufen wird. Da Sie die eval-Funktion nur mit Bedacht einsetzen sollten, sollten Sie auch mit EvalErrors nur sehr selten in Berührung kommen.

RangeError

RangeErrors entstehen, wenn Sie bei der Verwendung einer Funktion auf unerlaubte Zahlenbereiche zugreifen. Erstellen Sie beispielsweise ein Array mit einer ungültigen Anzahl von Elementen, wie -1, wird ein Range­Error geworfen. Aber auch bei anderen Funktionen, die mit Zahlen zu tun haben, wie der toFixed-Methode, können Sie bei falscher Verwendung mit RangeErrors in Kontakt kommen. Diese Art von Fehlern können Sie allerdings fangen und entsprechend behandeln.

ReferenceError

Mit dem ReferenceError werden Sie wohl am häufigsten in Kontakt kommen. Dieser Fehler tritt auf, wenn Sie versuchen, auf eine nicht deklarierte Variable zuzugreifen. Schreiben Sie also beispielsweise bei der Erzeugung eines neuen Arrays nicht new Array, sondern new Arry, wird dies mit einem ReferenceError quittiert. Mithilfe der Fehlerbehandlungsroutinen, die Ihnen JavaScript zur Verfügung stellt, können Sie auch mit dieser Art von Fehlern umgehen.

TypeError

Fehler der Kategorie TypeError treten auf, wenn Sie die falschen Datentypen verwenden. Obwohl JavaScript zu den nicht typsicheren Sprachen zählt, gibt es trotzdem verschiedene Stellen, an denen Sie auf den korrekten Typ achten müssen. So können Sie zum Beispiel verschiedene String-Methoden nicht auf ein Zahlenobjekt anwenden. Diese Art von Fehler können Sie innerhalb Ihrer JavaScript-Applikation abfangen und damit umgehen.

URIError

Der letzte Typ von Fehlern, mit dem Sie bei der Arbeit mit JavaScript konfrontiert werden, ist der URIError. Diese Art von Fehler wird geworfen, wenn Sie versuchen, einer der URI-Funktionen wie beispielsweise decode­URI einen ungültigen Wert zu übergeben. Wie bei den meisten anderen Fehlertypen von JavaScript können Sie auch Fehler vom Typ URIError abfangen und mit dem Fehler umgehen.

Neben den Fehlertypen, die Ihnen JavaScript zur Verfügung stellt, können Sie auch eigene Fehler definieren. Was das für Ihre Applikation bedeutet, erfahren Sie im Folgenden.

Eigene Fehler

Wie in vielen anderen Programmiersprachen können Sie auch in JavaScript Exceptions werfen. Das sind Fehlermeldungen, die dafür sorgen, dass Ihre Applikation abgebrochen wird, wenn Sie nicht korrekt gefangen werden. Exceptions werden generell mit dem throw-Statement geworfen. Sie sollten sie immer dann verwenden, wenn ein unerwarteter Fehler oder eine andere Ausnahmesituation innerhalb Ihrer Applikation auftritt, die speziell behandelt werden muss. Im einfachsten Fall geben Sie nach dem throw lediglich eine Zeichenkette an. Dann ist die Aussagekraft der Fehlermeldung allerdings nur begrenzt. Viel besser können Sie den Exception-Mechanismus von JavaScript mit Fehlerobjekten ausnutzen.

In JavaScript steht Ihnen, um aussagekräftigere Exceptions zu werfen, eine Konstruktor-Funktion Error zur Verfügung. Fehler vom Typ Error stellen die allgemeinsten Fehler dar. Von diesem Typ leiten auch die übrigen Fehlertypen wie beispielsweise der ReferenceError oder der URIError ab. Dieser allgemeine Fehlertyp enthält die Eigenschaften name und message, wobei die Eigenschaft name den Typ des Fehlers bezeichnet und im Falle eines allgemeinen Fehlers den Wert Error enthält. Die Eigenschaft message enthält die Beschreibung des Fehlers. Diese Beschreibung übergeben Sie der Konstruktor-Funktion bei der Erzeugung als Argument. Als Methode stellt Ihnen das Fehlerobjekt lediglich die toString-Methode zur Verfügung, mit deren Hilfe Sie eine String-Repräsentation des Fehlers erhalten. Damit Sie nun eine Exception vom Typ Error werfen können, verbinden Sie das throw-Statement mit einer konkreten Instanz des Fehlers, den Sie mit dem new Operator und dem Error-Konstruktor erhalten. Beim Werfen von Exceptions sind Sie allerdings nicht auf Fehler vom Typ Error beschränkt, sondern können auch Instanzen der übrigen sechs Standardfehler verwenden. So können Sie beispielsweise auch einen SyntaxError werfen.

Reichen Ihnen diese Fehlertypen nicht aus, können Sie auch eine eigene Konstruktor-Funktion erstellen und diese von Error ableiten. Eine noch einfachere Variante besteht darin, dass Sie ein Objektliteral erzeugen, das sowohl die Eigenschaften name als auch message enthält. Dieses Objekt können Sie ebenfalls mit ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang