Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】dom\domexception::getCode()メソッドの使い方

getCodeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『getCodeメソッドは、DOM操作で発生した例外のエラーコードを取得するために実行するメソッドです』

このメソッドは、PHPの基本的な例外処理クラスであるExceptionクラスから継承されたものです。プログラムがXMLやHTMLドキュメントを操作している最中に何らかの問題が発生すると、dom\domexceptionオブジェクトが生成されてスロー(送出)されます。この例外オブジェクトには、エラーの内容を示すメッセージだけでなく、エラーの種類を識別するための整数値である「例外コード」も保持されています。getCodeメソッドの役割は、この保持されている例外コードを返すことです。

通常、このメソッドはtry...catchブロックの中で使用されます。catchブロックでdom\domexceptionオブジェクトを捕捉した際に、getCodeメソッドを呼び出すことで、どのような種類のエラーが発生したのかを数値で具体的に特定できます。例えば、DOM仕様で定義されているDOM_INDEX_SIZE_ERRDOM_NOT_FOUND_ERRといった定数と比較することで、エラーに応じた適切な処理を分岐させることが可能となり、より信頼性の高いエラーハンドリングを実装するのに役立ちます。

構文(syntax)

1<?php
2try {
3    $doc = new DOMDocument();
4    // 階層が正しくないため、DOMExceptionが発生します
5    $doc->appendChild(new DOMText('Error'));
6} catch (DOMException $e) {
7    // 例外オブジェクトからエラーコードを取得します
8    $errorCode = $e->getCode();
9    echo $errorCode;
10}
11?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

DOMExceptionオブジェクトで発生したエラーコードを整数で返します。

サンプルコード

PHP DOMException の getCode() を使う

1<?php
2
3/**
4 * 意図的にDOM例外を発生させ、DOMException::getCode() の使い方を示します。
5 *
6 * 異なるドキュメントに属するノードを追加しようとすると、
7 * DOMException (WRONG_DOCUMENT_ERR) がスローされます。
8 * この例外オブジェクトからエラーコードを取得します。
9 */
10function demonstrateDomExceptionGetCode(): void
11{
12    try {
13        // 1つ目のDOMドキュメントを作成
14        $doc1 = new DOMDocument();
15        $doc1->loadXML('<document1><item>This is an item.</item></document1>');
16
17        // 2つ目のDOMドキュメントを作成
18        $doc2 = new DOMDocument();
19        $doc2->loadXML('<document2></document2>');
20
21        // doc1 から 'item' ノードを取得
22        $itemNode = $doc1->getElementsByTagName('item')->item(0);
23
24        // doc2 のルート要素に、doc1 のノードを追加しようと試みる
25        // これは DOMException をスローする原因となります
26        $doc2->documentElement->appendChild($itemNode);
27
28    } catch (DOMException $e) {
29        // 発生した DOMException をキャッチ
30        echo "DOM例外をキャッチしました。" . PHP_EOL;
31
32        // getCode() メソッドを使って例外コードを取得し、表示
33        // このコードはエラーの種類を特定するのに役立ちます。
34        // 例えば、WRONG_DOCUMENT_ERR のコードは 4 です。
35        $errorCode = $e->getCode();
36        echo "エラーコード: " . $errorCode . PHP_EOL;
37
38        // 参考として、エラーメッセージも表示
39        echo "エラーメッセージ: " . $e->getMessage() . PHP_EOL;
40    }
41}
42
43// 関数を実行して結果を確認
44demonstrateDomExceptionGetCode();
45

PHPのDOMException::getCode()メソッドは、DOM(Document Object Model)操作中に発生した例外の具体的なエラーコードを取得するために使用されます。このメソッドは引数を必要とせず、エラーの種類を示す整数値(int)を戻り値として返します。

提供されたサンプルコードでは、異なるDOMドキュメントに属するノードを互いに移動させようとする状況で、意図的にDOMExceptionを発生させています。具体的には、$doc1から取得したitemノードを$doc2のルート要素に追加しようとすると、WRONG_DOCUMENT_ERRという種類のDOMExceptionがスローされます。

try-catchブロックを用いることで、このDOMExceptionを安全に捕捉しています。例外が捕捉されると、catchブロック内の$e変数にDOMExceptionオブジェクトが格納されます。この$eオブジェクトに対してgetCode()メソッドを呼び出すことで、発生したエラーの種類に対応する数値を取得できます。例えば、WRONG_DOCUMENT_ERRのエラーコードは4です。このようにして取得したエラーコードは、プログラム内でエラーの種類を判別し、その後の適切なエラーハンドリングを行うために役立ちます。

DOMException::getCode()は、PHPのDOM操作中に発生する例外の種類を数値で特定する際に利用します。例外が発生する可能性がある処理は、必ずtry-catchブロックで囲んでください。これにより、プログラムが予期せず停止するのを防ぎ、エラーに応じた適切な処理を実行できます。取得したエラーコードは、どの種類のエラーが起きたかをプログラムで判断するための重要な情報となります。本サンプルコードのように、異なるDOMドキュメントに属するノードを直接操作しようとすると、DOMExceptionが発生しやすいので特に注意が必要です。エラーコードだけでなく、getMessage()で取得できるエラーメッセージも合わせて確認することで、問題の原因をより具体的に把握しやすくなります。

関連コンテンツ

関連プログラミング言語

【PHP8.x】dom\domexception::getCode()メソッドの使い方 | いっしー@Webエンジニア