序章
DOMErrorは、DOM によって定義されたインターフェースです。
ブラウザが対応しているか確認したい。素朴なチェックは
window.DOMError !== undefined
より良いチェックは、DOMError をスローするアクションを使用して、それをチェックすることです。
err instanceof DOMError === true
質問
DOMError をスローするアクションは何ですか?
DOMErrorは、DOM によって定義されたインターフェースです。
ブラウザが対応しているか確認したい。素朴なチェックは
window.DOMError !== undefined
より良いチェックは、DOMError をスローするアクションを使用して、それをチェックすることです。
err instanceof DOMError === true
DOMError をスローするアクションは何ですか?
ADOMError
は、例外に基づかないエラー状態です。DOMError
両方を実装し、DOMException
としてスローされる可能性があるオブジェクトを除いて、スローされることはありませんDOMException
。
具体的なクラスの実装は多くのDOM実装で同じであると予想されますが、既存の実装を再利用するのが困難になるバインディングを持つ言語の利点のために、仕様では分離されていDOMError
ます。たとえば、ネイティブ例外のない言語には、缶のようなプロパティにオブジェクトとして実際にダンプできない帯域外エラーシグナリングチャネルがある場合があります。DOMException
DOMException
DOMError
DOM4でドラフトされたDOMErrorは、名前文字列のみを保持する簡単なプレースホルダーです。その上に構築された仕様は、より有用な情報をカプセル化するためにいくつかのプロパティを追加することが期待されます。
現在、これはW3 File APIでエラーに使用されてFileReader
いますが、非同期インターフェイスであるため、例外をスローするのに役立つ場所はありません。File APIは、まだサブインターフェイスに追加のプロパティを追加していませんが、File APIDOMError
とDOM4仕様の両方が、推奨ステータスに近づく前に変更される可能性があります。
DOMレベル3コアで最初に導入されたDOMErrorは、ドキュメント内のどこでエラーが発生したかに関するより詳細な情報を備えた拡張エラーインターフェイスを提供しました。これは、DOMレベル3 LSのシリアライザーおよびパーサープロセスを対象としていましたが、このdocument.normalizeDocument
メソッドを使用するためにCoreに含まれており、シリアライズ/解析サイクルもシミュレートします。
今日のブラウザは、DOM 4、DOMレベル3 LS、またはのいずれもサポートしていないため、DOMErrorはありませんnormalizeDocument
。ただし、他の非ブラウザーDOM実装は次の場合があります。1つのpxdomには、DOM3インターフェイスがあります。
Firefox ( source ) には実装されておらず、Chrome 17 にも実装されていません。
これに関する w3 のドキュメントは非常に曖昧です。次のステートメントを参照してください。
このインターフェイスは、例外以外の方法でエラー処理を導入したい他の仕様を対象としています。例外タイプが再利用されることが期待されます。
私が見る限り、メソッドはDOMExceptionをスローします。これは( exceptionではなく) ラベル付けされたインターフェイスであるため、実装して使用しないでください。
ちなみにこれはDOM Level 3にもありました。
編集: ThinkingStiff のコメントを読んだ後、私はそれがスローされるべきではないと確信しています。自分で投げることさえできません(Opera 11.52):
Uncaught exception: TypeError: 'DOMError' is not a constructor
Uncaught exception: TypeError: 'DOMError' is not a function
これは、Java の DOM 実装であるDOMErrorのインターフェースでもあります。
DOMErrorsは、無効なDOM要素を作成しようとしたとき、または存在しないノードを引数としてノード操作メソッドに渡したときに発生します。つまり、操作が実行できない場合は例外が発生します。
例:
document.querySelectorAll("div:foo");
これにより、div:fooが存在しない場合にDOMErrorが発生します。