【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_ERRやDOM_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()で取得できるエラーメッセージも合わせて確認することで、問題の原因をより具体的に把握しやすくなります。