DOMExceptionNN 6 IE nicht zutreffend DOM 1

Einige Operationen mit W3C-DOM-Objekten können, wenn etwas schief geht, Fehler verursachen, oder, wie es im Jargon von JavaScript 1.5 heißt, Ausnahmen zurückgeben. Das W3C-DOM definiert ein Objekt, das eine Codenummer übermittelt, die auf eine wohldefinierte (wenngleich knappe) Liste der Ausnahmen verweist. Wenn Sie beispielsweise versuchen, eine Textnode als Child-Objekt an eine andere Textnode anzuhängen, gibt die appendChild( )-Methode einer solchen Operation eine Ausnahme mit der Codenummer 3 zurück. Diese Nummer entspricht der Ausnahme, die auf einen Versuch hinweist, in einer DOM-Hierarchie eine unzulässige oder logisch unmögliche Aktion auszuführen (eine Textnode kann keine Child-Nodes haben).

 

Die Übermittlung der vom DOM erzeugten Ausnahmemeldung an einen Skriptersteller ist Aufgabe der Hostumgebung, nicht des DOM. Da JavaScript 1.5 bereits über einen Ausnahmebehandlungsmechanismus verfügt, kam die Aufgabe, das DOMException-System mit der JavaScript-Ausnahmebehandlung zu vereinen, zunächst Netscape zu, wie dies in Netscape 6 implementiert ist. Der neue Mechanismus ermöglicht die Verarbeitung verschiedener Fehlerobjekttypen durch die Ausnahmebehandlung, sodass das ursprüngliche System nicht nur nicht beeinträchtigt, sondern der Mechanismus im Gegenteil auf das gesamte W3C-DOM-DOMException-Objekt und sogar auf einige Netscape-spezifische Fehler ausgedeht wurde. Die Verarbeitung der verschiedenen Arten von Ausnahmen findet nach wie vor im catch-Block einer try/catch-Konstruktion statt, und alle Informationen bezüglich der Ausnahme werden wie bisher als Objekt über einen einzigen Parameter an den catch-Block übermittelt.

 

Das DOM-Ausnahmeobjekt von Netscape (das das W3C-DOMException-Objekt beinhaltet) erreicht den catch-Block mit einer längeren Liste zugeordneter Eigenschaften und Methoden als eine auf andere Ursachen zurückzuführende Ausnahme (z. B. der Versuch, eine nicht initialisierte JavaScript-Variable zu verwenden). Das wesentliche Unterscheidungsmerkmal eines DOMException-Objekts, das den anderen Typen fehlt, ist die code-Eigenschaft. Darüber hinaus gibt jeder Codewert zwischen 1 und 15 einen Ausnahmetyp an, der der formalen DOM-Spezifikation bis Level 2 bekannt ist. Diese Liste wird in Zukunft mit Sicherheit um zusätzliche Typen erweitert. Netscape verwendet für seine Liste der browserspezifischen Ausnahmen die Codenummern ab 1000.

 

Wenn Sie echte W3C-DOM-Ausnahmen auf ihrem eigenen Ausführungspfad verarbeiten möchten, können Sie eine Konstruktion ähnlich der folgenden verwenden (die ein Anwachsen der DOMException-Liste in künftigen Versionen auf bis zu 999 Einträge ermöglicht):

try {
    // your DOM-related statement goes here
}
catch(e) {
    if (typeof e.code == "number") {
        if (e.code< 1000) {
            // process DOMException object here
        } else {
            // process Netscape DOM exception object here
        }
    } else {
        // process language or other exceptions here
    }
} 
 

Natürlich ist es äußerst unwahrscheinlich, dass Detailinformationen zu Ausnahmefehlern dem Benutzer von Nutzen sein werden, für Sie als Entwickler sind sie jedoch von unschätzbarem Wert. Weitere Informationen zur Ausnahmebehandlung finden Sie in der Abhandlung des error-Objekts in Kapitel 12.

 
Objektmodellreferenz
 
errorObjectReference
 
Objektspezifische Eigenschaften

code

 
Objektspezifische Methoden

Keine.

 
Objektspezifische Ereignisbehandlungsroutineneigenschaften

Keine.

codeNN 6 IE nicht zutreffend DOM 1

Schreibgeschützt

Stellt eine ganze Zahl bereit, die einem der definierten DOM-Fehlertypen entspricht. Die folgende Tabelle enthält eine Übersicht über die Codewerte und ihre äquivalenten Konstanten mit Hinweisen zu möglichen Ursachen für die jeweiligen Ausnahmefehler.

 
CodeKonstanteWahrscheinlichste Ursache
1INDEX_SIZE_ERREin ganzzahliger Offset-Parameter liegt außerhalb des Bereichs des Zielobjekts.
2DOMSTRING_SIZE_ERREin Eigenschaftszeichenfolgenwert ist zu groß für die Hostsprache.
3HIERARCHY_REQUEST_ERRVersuch, ein Child an eine Node anzuhängen, die keine Child-Objekte aufnehmen kann.
4WRONG_DOCUMENT_ERRVersuch, eine von einem anderen Dokument erstellte Node einzufügen (ohne das hierfür erforderliche Verfahren).
5INVALID_CHARACTER_ERRVersuch, einen Bezeichner mit einem unzulässigen Zeichen zuzuweisen.
6NO_DATA_ALLOWED_ERRVersuch, Daten einer Node zuzuweisen, die keine Daten aufnehmen kann.
7NO_MODIFICATION_ALLOWED_ERRVersuch, einer schreibgeschützten Eigenschaft einen Wert zuzuweisen.
8NOT_FOUND_ERRMethodenparameterverweis auf eine im Bereich des Objekts nicht vorhandene Node.
9NOT_SUPPORTED_ERRVersuch, eine nur in XML zulässige Methode in einem HTML-Dokument aufzurufen.
10INUSE_ATTRIBUTE_ERRÜbergabe eines Methodenparameters an eine Attr-Node, die bereits zu einem anderen Element gehört (ohne die Attr-Node zuvor zu klonen).
11INVALID_STATE_ERRReferenz auf eine Node, die weder gelesen noch geschrieben werden kann.
12SYNTAX_ERRTippfehler.
13INVALID_MODIFICATION_ERRVersuch, den Typ einer Node zu ändern.
14NAMESPACE_ERRFalscher oder fehlerhaft gebildeter Name.
15INVALID_ACCESS_ERRUnzulässiger Zugriff.
 
Beispiel
 
if (e.code == e.INVALID_CHARACTER_ERR) {
    // process for an illegal identifier character
}
 
Wert

Integerwert

 
Standardwert

Abhängig vom Fehler.