DOMExceptionNN 6 IE なし DOM 1

W3C DOM のオブジェクトに対する操作に何らかの誤りがあると、エラーが発生する (JavaScript 1.5 の用語では "例外を投げる") 場合があります。W3C DOM では、明確に定義 (制限) された例外リストに対応するコード値を返すオブジェクトが定義されています。たとえば、あるテキストノードを別のテキストノードに子ノードとして追加しようとすると、このような操作の appendChild() メソッドがコード値 3 の例外を投げます。このコード値は、DOM の階層に対して不正なアクションまたは論理的に不可能なアクションを実行しようとしたことを意味しています (テキストノードは子ノードを持つことができません)。

 

スクリプト作成者に DOM の例外情報を返す処理は、DOM ではなくホスト環境が受け持ちます。JavaScript 1.5 は既に例外処理のメカニズムを備えており、DOMException システムと JavaScript の例外処理を融合する作業は、まず Netscape が受け持ち、Netscape 6 で実装されました。この新しいメカニズムでは、さまざまな種類のエラーオブジェクトを例外処理の操作で使い回すことができるため、このメカニズムを W3C DOM の DOMException オブジェクトばかりでなく、いくつかの Netscape 独自のエラーにも対応するように拡張しても、元々のシステムに影響が出ることはありません。ただしこれまでどおり、種類に関わりなくすべての例外処理が try/catch ステートメントの catch ブロックで発生し、例外に関するすべての情報も catch ブロックに対する 1 つのパラメータを使ってオブジェクトとして渡されます。

 

W3C の DOMException オブジェクトを基に作成された Netscape DOM の例外オブジェクトは、他の原因 (たとえば初期化されていない JavaScript 変数を使用したなど) で発生する例外の場合と異なり、自身に割り当てられているプロパティとメソッドの長いリストと共に catch ブロックに渡されます。DOMException オブジェクト独自の特殊なタイプのプロパティとして code プロパティがあります。さらに 1 〜 15 のコード値は、Level 2 までの DOM で正式に定義されている例外タイプを表しており、これ以外のコード値も将来のリストに追加されることが確実です。Netscape では、ブラウザ固有の例外リストは 1000 から始まっています。

 

W3C DOM の実際の例外を、その実行パスに沿って処理しようとする場合には、次のようなステートメントを使用できます (このステートメントは DOMException リスト内のコード値が 999 になるまで反復させることができます)。

 

例外の関する詳細はユーザーにはほとんど役立ちませんが、開発者には非常に有用なものです。例外処理の詳細については、第 12 章の error オブジェクトを参照してください。

 
オブジェクト参照
 
errorObjectReference
 
オブジェクト固有のプロパティ

code

 
オブジェクト固有のメソッド

なし

 
オブジェクト固有のイベントハンドラープロパティ

なし

codeNN 6 IE なし DOM 1

読み取り専用

DOM の定義済みエラーに対応する整数を示します。次の表に、すべてのコード値とそれぞれに対応する定数、および例外を投げる問題を示します。

 
コード定数主な原因
1INDEX_SIZE_ERR整数のオフセットパラメータがターゲットオブジェクトの範囲外にある
2DOMSTRING_SIZE_ERRプロパティの文字列値がホスト言語に対して大きすぎる
3HIERARCHY_REQUEST_ERR子ノードを持てないノードに子ノードを追加した
4WRONG_DOCUMENT_ERR別のドキュメントから作成されたノードをインポートプロセスを介さずに挿入した
5INVALID_CHARACTER_ERR識別子に不正な文字を設定した
6NO_DATA_ALLOWED_ERRデータをサポートしないノードにデータを割り当てた
7NO_MODIFICATION_ALLOWED_ERR読み取り専用プロパティに値を設定した場合
8NOT_FOUND_ERRメソッドのパラメータがオブジェクトの範囲外のノードを参照しようとした
9NOT_SUPPORTED_ERRHTML ドキュメントで XML 固有のメソッドを呼び出した
10INUSE_ATTRIBUTE_ERR最初に Attr のクローンを作成せずに、既に別の要素に属している Attr ノードにメソッドのパラメータを追加した
11INVALID_STATE_ERR読み取りも書き込みもできないノードを参照した
12SYNTAX_ERRキー入力にミスがあった
13INVALID_MODIFICATION_ERRノードのタイプを変更しようとした
14NAMESPACE_ERR名前空間が一致しないか、名前のフォーマットに誤りがある
15INVALID_ACCESS_ERR目的の場所にアクセスできない
 
 
if (e.code == e.INVALID_CHARACTER_ERR) {
    // process for an illegal identifier character
}
 

整数

 
既定値

エラーによって異なります。