###
13.6.2.12 例外

バージョン2.1 以降で新規追加された 仕様です。

DOM レベル 2 勧告では、単一の例外 `DOMException` と、 どの種のエラーが発生したかをアプリケーションが決定できるようにする 多くの定数を定義しています。 `DOMException` インスタンスは、特定の例外に関する 適切な値を提供する `code` 属性を伴っています。

Python DOM インタフェースでは、上記の定数を提供していますが、 同時に一連の例外を拡張して、DOM で定義されている各例外コードに対して 特定の例外が存在するようにしています。 DOM の実装では、適切な特定の例外を送出しなければならず、 各例外は `code` 属性に対応する適切な値を伴わなければ なりません。

exception `DOMException`
  全ての特定の DOM 例外で使われている基底例外クラスです。この例外 クラスは直接インスタンス化することができません。

exception `DomstringSizeErr`
  指定された範囲のテキストが文字列に収まらない場合に送出されます。 この例外は Python の DOM 実装で使われるかどうかは判っていませんが、 Python で書かれていない DOM 実装から送出される場合があります。

exception `HierarchyRequestErr`
  挿入できない型のノードを挿入しようと試みたときに送出されます。

exception `IndexSizeErr`
  メソッドに与えたインデクスやサイズパラメタが負の値や許容範囲の 値を超えた際に送出されます。

exception `InuseAttributeErr`
  文書中にすでに存在する `Attr` ノードを挿入しようと試みた 際に送出されます。

exception `InvalidAccessErr`
  パラメタまたは操作が根底にあるオブジェクトでサポートされていない 場合に送出されます。

exception `InvalidCharacterErr`
  この例外は、文字列パラメタが、現在使われているコンテキストで XML 1.0 勧告によって許可されていない場合に送出されます。 例えば、要素型に空白の入った `Element` ノードを生成 しようとすると、このエラーが送出されます。

exception `InvalidModificationErr`
  ノードの型を変更しようと試みた際に送出されます。

exception `InvalidStateErr`
  利用できないオブジェクトや、もはや利用できなくなったオブジェクトを 使おうと試みた際に送出されます。

exception `NamespaceErr`
  Namespaces in XML に照らして許可されていない方法でオブジェクトを変更しようと 試みた場合、この例外が送出されます。

exception `NotFoundErr`
  参照しているコンテキスト中に目的のノードが存在しない場合に送出される 例外です。例えば、`NamedNodeMap.removeNamedItem()` は 渡されたノードがノードマップ中に存在しない場合にこの例外を送出 します。

exception `NotSupportedErr`
  要求された方のオブジェクトや操作が実装でサポートされていない場合に 送出されます。

exception `NoDataAllowedErr`
  データ属性をサポートしないノードにデータを指定した際に送出されます。

exception `NoModificationAllowedErr`
  オブジェクトに対して (読み出し専用ノードに対する修正のように) 許可されていない修正を行おうと試みた際に送出されます。

exception `SyntaxErr`
  無効または不正な文字列が指定された際に送出されます。

exception `WrongDocumentErr`
  ノードが現在属している文書と異なる文書に挿入され、 かつある文書から別の文書へのノードの移行が実装でサポート されていない場合に送出されます。

DOM 勧告で定義されている例外コードは、以下のテーブルに従って 上記の例外と対応付けられます:

定数 | 例外
--- | ---
`DOMSTRING_SIZE_ERR` | `DomstringSizeErr`
`HIERARCHY_REQUEST_ERR` | `HierarchyRequestErr`
`INDEX_SIZE_ERR` | `IndexSizeErr`
`INUSE_ATTRIBUTE_ERR` | `InuseAttributeErr`
`INVALID_ACCESS_ERR` | `InvalidAccessErr`
`INVALID_CHARACTER_ERR` | `InvalidCharacterErr`
`INVALID_MODIFICATION_ERR` | `InvalidModificationErr`
`INVALID_STATE_ERR` | `InvalidStateErr`
`NAMESPACE_ERR` | `NamespaceErr`
`NOT_FOUND_ERR` | `NotFoundErr`
`NOT_SUPPORTED_ERR` | `NotSupportedErr`
`NO_DATA_ALLOWED_ERR` | `NoDataAllowedErr`
`NO_MODIFICATION_ALLOWED_ERR` | `NoModificationAllowedErr`
`SYNTAX_ERR` | `SyntaxErr`
`WRONG_DOCUMENT_ERR` | `WrongDocumentErr`