[1] [[DOM]] では、処理を行えない時に[DFN[[RUBYB[例外] [exception]]]]が発生します。 特に DOM 全般で発生し得る例外や DOM Core Module・XML Module で使われる例外が [DFN[[CODE(DOM)[DOMException]]]] です。 ちなみに、処理が行えない時というのは (1) 論理的理由から行えない時、 (2) データが失われた時 (3) 実装が不安定な時などです。 通常索引に範囲外の値が指定された場合などは例外ではなく [CODE(DOM)[[[null]]]] 値が返される程度で済まされます。 また、束縛によっては例外という概念がないので、返し値などで伝達されることになります。 [4] [CODE(DOM)[DOMException]] は DOM Core Module の一部です。 すべての DOM 実装が完全に実装しなければなりません。 [5] 仕様書: - [DOM 1] Core Exception [CODE(DOM)[DOMException]] - [DOM 2] Core Exception [CODE(DOM)[DOMException]] - [DOM 3] Core Exception [CODE(DOM)[DOMException]] [6] [CODE(DOM)[DOMException]] の例外の種類は定義群 [CODE(DOM)[[[ExceptionCode]]]] の定数で識別されます。 [7] ,名前 ,型 ,出典 ,[CODE(DOM)[[[code]]]] ,[CODE(DOM)[[[unsigned]] [[short]]]] ,"[DOM 1,2,3]" [8] [CODE(DOM)[DOMSTRING_SIZE_ERR]] はほとんどすべての [CODE(DOM)[DOMString]] 型メソッド・属性で発生し得ると思うのですが、 仕様書には一部のメソッド・属性にしか書いてありません。 例えば [CODE(DOM)[[CODE(DOMi)[[[Node]]]].[CODE(DOMa)[[[localName]]]]]] 取得時に起こっても不思議はないのですが、 実際にはそんな猛烈な長さの名前など到底使われそうにも無いからなのか、例外が発生し得るとは書いてありません。 ([[名無しさん]]) [9] [CITE[IRC logs: freenode / #whatwg / 20080811]] ([CODE[2008-08-14 19:22:43 +09:00]] 版) ([[名無しさん]]) [10] [CITE@en[Exception Codes - WHATWG Wiki]] ([TIME[2008-08-11 07:36:37 +09:00]] 版) [11] ,[CODE(DOMc)@en[[[INVALID_EXPRESSION_ERR]]]],[CODE(DOM)[[[51]]]],[[DOM XPath]] ([CODE(DOMi)@en[[[XPathException]]]]) ,[CODE(DOMc)@en[[[TYPE_ERR]]]],[CODE(DOM)[[[52]]]],[[DOM XPath]] ([CODE(DOMi)@en[[[XPathException]]]]) ,[CODE(DOMc)@en[[[NO_SCHEMA_AVAILABLE_ERR]]]],[CODE(DOM)[[[71]]]],[[DOM妥当性検証]] ([CODE(DOMi)@en[[[ExceptionVal]]]]) [53] [[DOM3]] で導入された[[例外]]の[[符号]]は [CODE(DOMi)@en[[[DOMException]]]] とかぶらないようになっていますが、 [[DOM2]] で導入されたもの ([CODE(DOMi)@en[[[EventException]]]], [CODE(DOMi)@en[[[RangeException]]]]) はかぶっています。