brauchbar.de - WebDesign, Programmierung,Development in HTML, CSS, Javascript, PHP, Perl und mehr

[ Startseite | Artikel : HTML · JavaScript · CSS · Perl · Usability · Sonstiges | Services | Über ]


verwandte Artikel und Seiten

Fehlerbehandlung in JavaScript

von Thomas Salvador.

Tritt in einem JavaScript ein syntaktischer Fehler oder ein Laufzeitfehler auf, so wird der error Event ausgelöst. Dies geschieht nicht bei Browserfehlern.

Wo liegen die Unterschiede?

Wie erlangt man Kontrolle?

Die Kontrolle übernimmt man durch Setzen von onerror bzw. window.onerror. Insgesamt hat man folgende Möglichkeiten (Beispiele folgen):

Beispiele

Beispiel 1

Hier werden alle Fehlermeldungen unterdrückt, wenn das Bild lädt.

<img name="bild1" src="bad.gif">
onError="null">

Beispiel 2

Um Ferhlermeldungen für das gesamte Fenster abzuschalten, schreiben wir:

<script type="text/javascript">
window.onerror=null;
</script>

Damit ist onerror dann insbesondere für das Bild null und muss nicht separat genannt und gesetzt werden.

<img name="bild1" src="bad.gif">

Beispiel 3

Dieses Beispiel schaltet alle Fehlermeldungen ab, spezifiziert jedoch für das Bild eine eigene Fehlerbehandlungsroutine, die dann auch gerufen wird.

<script type="text/javascript">
window.onerror=null;

function imgErrorFunc() {
alert("Bild ist fehlerhaft.");
}
</script>

<img name="bild1" src="bad.gif"
     onError="imgErrorFunc();">
<img name="bild2" src="bad.gif">

Sie sehen: tritt in dem ersten Bild ein Fehler auf, wird die angegebene Funktion imgErrorFunc() gerufen, die hier eine Meldung "Bild ist fehlerhalft" erzeugt.

Für das fehlerhafte zweite Bild geschieht jedoch nichts. Da hier kein onError Funktion angeben ist, gilt die bei window.onerror eingestellte. Diese hatten wird aber auf null und damit auf das Unterdrücken der Fehlermeldung gesetzt.

Wieso sind die Bilder fehlerhaft? Es sei angenommen, dass bad.gif einen Fehler erzeugt. Da bad.gif beiden Bildern bild1 und bild2 zugewiesen wird, sind beide fehlerhaft. Bei bild2 wirkt window.onerror=null; Bei bild1 wurde explizit eine Fehlerbehandlungsfunktion genannt, weshalb bei letzterem etwas passiert und bei ersterem nichts, obwohl beide diegleiche Dateizuweisung aufweisen.

Beispiel 4

(Dieses Beispiel wurde 1:1 aus der englischen Netscape Dokumentation übernommen und neu beschrieben)

In diesem Beispiel wird gezeigt, wie Fehler getrackt werden. Es wird eine Funktion myError definiert, die JavaScript-Fehler unterbricht. Zum Einsatz kommen drei Felder msgArray, urlArray, lnoArray, die die Nachrichten, URLs und Zeilennummern für alle Fehler festhalten.

Klickt der Benutzer auf Display Error Report, so öffnet displayErrors() ein Fenster und erzeugt darin einen Report aus den erfaßten Daten. Der Standardfehlerdialog von JavaScript wird unterdrückt.

<script type="text/javascript">
window.onerror = myOnError
msgArray = new Array()
urlArray = new Array()
lnoArray = new Array()
function myOnError(msg, url, lno) {
msgArray[msgArray.length] = msg
urlArray[urlArray.length] = url
lnoArray[lnoArray.length] = lno
return true
}
function displayErrors() {
win2=window.open('','window2','scrollbars=yes')
win2.document.writeln('<b>Error Report</B><p>')
for (var i=0; i < msgArray.length; i++) {
win2.document.writeln('<b>Error in file:</B> '
 + urlArray[i] + '<br>')
win2.document.writeln('<b>Line number:</B> '
 + lnoArray[i] + '<br>')
win2.document.writeln('<b>Message:</B> '
 + msgArray[i] + '<p>')
}
win2.document.close()
}
</script>

Beispieldatei:

<body onload="noSuchFunction()">
<form>
<br><input type="button" value="This button has a syntax error"
onClick="alert('unterminated string)">
<p><input type="button" value="Display Error Report"
onClick="displayErrors()">
</form>

Error Report zur Beispieldatei

Error in file: file:///c%7C/temp/onerror.html
Line number: 34
Message: unterminated string literal
Error in file: file:///c%7C/temp/onerror.html
Line number: 34
Message: missing ) after argument list
Error in file: file:///c%7C/temp/onerror.html
Line number: 30
Message: noSuchFunction is not defined

Verwandte Artikel und Seiten



brauchbar web
Diese Site anlinken. Artikel zu CSS | HTML | JavaScript | Perl | Usability | Sonst. | nach Ausgabe.

Copyright © 1999-2015 Thomas Salvador und brauchbar.de . Alle Rechte vorbehalten. Gehostet bei all-inkl.
Reproduktion, ganz oder in Teilen, nur mit schriftlicher Zustimmung von Thomas Salvador. Impressum · Datenschutzerklärung · Kontakt.

zum Inhaltsverzeichnis der 17. Ausgabe.

Linken Sie bitte zu der festen Adresse http://www.brauchbar.de/wd/artikel/15.html .