広告

Java : DOMException (XML) - API使用例

DOMException (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。


概要

DOM操作によって例外が発生するのは、ごく「例外的な」場合のみです。たとえば、論理上の問題、データの損失、実装の安定性の欠如などが原因で操作を実行できない場合にのみ、例外が発生します。 通常の処理状況では、DOMメソッドは例外ではなく、特定のエラー値を返します(NodeListの使用時における範囲外(out-of-bound)エラーなど)。

クラス構成

DOMException は非チェック例外です。
XML の DOM操作でエラーが発生したときにスローされます。

final var builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
final var document = builder.newDocument();

final var root = document.createElement("root");
document.appendChild(root);

try {
    root.appendChild(root);
} catch (DOMException e) {
    System.out.println(e);
}

// 結果
// ↓
//org.w3c.dom.DOMException:
// HIERARCHY_REQUEST_ERR: 許可されていない場所でノードを挿入しようとしました。

フィールド

short code

final var e = new DOMException(DOMException.INVALID_STATE_ERR, "abc");
System.out.println(e); // org.w3c.dom.DOMException: abc
System.out.println(e.code); // 11

static final short DOMSTRING_SIZE_ERR

指定されたテキスト範囲がDOMString内に収まらない場合。

System.out.println(DOMException.DOMSTRING_SIZE_ERR); // 2

static final short HIERARCHY_REQUEST_ERR

Nodeが所属先以外に挿入された場合。

System.out.println(DOMException.HIERARCHY_REQUEST_ERR); // 3

static final short INDEX_SIZE_ERR

インデックスまたはサイズが負の数または許容値より大きい場合。

System.out.println(DOMException.INDEX_SIZE_ERR); // 1

static final short INUSE_ATTRIBUTE_ERR

すでにほかで使用されている属性を追加しようとした場合。

System.out.println(DOMException.INUSE_ATTRIBUTE_ERR); // 10

static final short INVALID_ACCESS_ERR

パラメータまたは操作が基本となるオブジェクトによってサポートされていない場合。

System.out.println(DOMException.INVALID_ACCESS_ERR); // 15

static final short INVALID_CHARACTER_ERR

XML名などに不正な文字列、無効な文字列が指定された場合。

System.out.println(DOMException.INVALID_CHARACTER_ERR); // 5

static final short INVALID_MODIFICATION_ERR

基本となるオブジェクト型を変更しようとした場合。

System.out.println(DOMException.INVALID_MODIFICATION_ERR); // 13

static final short INVALID_STATE_ERR

使用できないオブジェクトを使用しようとした場合。

System.out.println(DOMException.INVALID_STATE_ERR); // 11

static final short NAMESPACE_ERR

不正な名前空間を使ってオブジェクトを作成または変更しようとした場合。

System.out.println(DOMException.NAMESPACE_ERR); // 14

static final short NO_DATA_ALLOWED_ERR

データをサポートしないNodeに対してデータが指定された場合。

System.out.println(DOMException.NO_DATA_ALLOWED_ERR); // 6

static final short NO_MODIFICATION_ALLOWED_ERR

変更が許可されていないオブジェクトを変更しようとした場合。

System.out.println(DOMException.NO_MODIFICATION_ALLOWED_ERR); // 7

static final short NOT_FOUND_ERR

コンテキスト内に存在しないNodeを参照しようとした場合。

System.out.println(DOMException.NOT_FOUND_ERR); // 8

static final short NOT_SUPPORTED_ERR

実装が要求されたオブジェクト型または操作をサポートしていない場合。

System.out.println(DOMException.NOT_SUPPORTED_ERR); // 9

static final short SYNTAX_ERR

不正な文字列、無効な文字列が指定された場合。

System.out.println(DOMException.SYNTAX_ERR); // 12

static final short TYPE_MISMATCH_ERR

オブジェクトの型が、オブジェクトに関連するパラメータの予想される型と互換性がない場合。

System.out.println(DOMException.TYPE_MISMATCH_ERR); // 17

static final short VALIDATION_ERR

insertBeforeやremoveChildといったメソッドへの呼出しで、「部分的有効性」の面でNodeが無効になる場合は、この例外がスローされ、操作は完了しません。

System.out.println(DOMException.VALIDATION_ERR); // 16

static final short WRONG_DOCUMENT_ERR

Nodeが作成元文書以外(このノードをサポートしない文書)で使用された場合。

System.out.println(DOMException.WRONG_DOCUMENT_ERR); // 4

コンストラクタ

DOMException (short code, String message)

final var e = new DOMException(DOMException.INVALID_STATE_ERR, "abc");
System.out.println(e); // org.w3c.dom.DOMException: abc
System.out.println(e.code); // 11

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。


関連記事

ページの先頭へ