【PHP8.x】OutOfBoundsException::getCode()メソッドの使い方
getCodeメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getCodeメソッドは、OutOfBoundsExceptionオブジェクトに設定された例外コードを取得するために使用されるメソッドです。OutOfBoundsExceptionは、配列や文字列などで、存在しないインデックスやキーへのアクセスが試みられた場合など、有効な範囲外でエラーが発生した際にスローされる例外の一種です。例外がスローされる際、開発者はエラーメッセージと共に、エラーの種類を識別するための整数値である「例外コード」を任意で設定することができます。このgetCodeメソッドを呼び出すと、その例外オブジェクトに設定された整数コードが返されます。取得したコードを利用することで、try-catch構文の中で例外の種類をプログラム的に判別し、コードの値に応じて異なるエラー処理を実行するなど、より詳細な例外ハンドリングを実装することが可能になります。もし例外コードが明示的に指定されていない場合、このメソッドはデフォルトで0を返します。この機能は、基底クラスであるExceptionクラスから継承されています。
構文(syntax)
1public final OutOfBoundsException::getCode(): int
引数(parameters)
引数なし
引数はありません
戻り値(return)
int
このメソッドは、例外がスローされた際に設定されたエラーコードを整数型で返します。
サンプルコード
PHP OutOfBoundsException getCode()で例外コードを取得する
1<?php 2 3/** 4 * 配列の指定されたインデックスの値を取得しようと試みる関数 5 * 存在しないインデックスが指定された場合、例外をスローする 6 * 7 * @param array $data 検索対象の配列 8 * @param int $index 取得したい値のインデックス 9 * @return void 10 */ 11function checkIndex(array $data, int $index): void 12{ 13 try { 14 // 配列に指定されたインデックスが存在するかチェック 15 if (!isset($data[$index])) { 16 // インデックスが存在しない場合、OutOfBoundsExceptionをスローする 17 // 第2引数で例外コード(今回は 404)を設定する 18 throw new OutOfBoundsException('指定されたインデックスは範囲外です。', 404); 19 } 20 21 // 正常に値が取得できた場合 22 echo "インデックス {$index} の値: " . $data[$index] . PHP_EOL; 23 24 } catch (OutOfBoundsException $e) { 25 // スローされたOutOfBoundsExceptionをキャッチする 26 echo "エラー: " . $e->getMessage() . PHP_EOL; 27 28 // getCode()メソッドを使って、例外がスローされた際に設定したコードを取得する 29 $code = $e->getCode(); 30 31 // 取得した例外コードを出力する 32 echo "例外コード: " . $code . PHP_EOL; 33 } 34} 35 36// サンプルデータ配列 37$sampleArray = ['apple', 'banana', 'cherry']; 38 39// 存在するインデックスで関数を呼び出す 40checkIndex($sampleArray, 1); 41 42echo "-------------------------" . PHP_EOL; 43 44// 存在しないインデックスで関数を呼び出す 45checkIndex($sampleArray, 5); 46 47?>
このPHPコードは、OutOfBoundsExceptionという例外オブジェクトから、エラーの種類を識別するための「例外コード」を取得する方法を示しています。OutOfBoundsExceptionは、配列などで範囲外のインデックスにアクセスしようとしたときに発生する例外です。
getCode()メソッドは、例外がスロー(throw)された際に設定された整数値のコードを取得するために使用されます。このメソッドに引数はなく、戻り値として整数(int)型の例外コードを返します。
サンプルコードのcheckIndex関数では、配列に存在しないインデックスが指定された場合、throw new OutOfBoundsException('...', 404) のように、第2引数に404という例外コードを指定して例外を発生させています。catchブロックでこの例外を捕捉し、$e->getCode()を呼び出すことで、設定された例外コード404を取得して出力しています。このように例外コードを利用することで、エラーメッセージの文字列に頼ることなく、数値によってエラーの種類を正確に識別し、コードに応じた適切な処理を行うことができます。
getCode()メソッドは、例外が作られた際に設定された整数コードを取得します。このコードは、new OutOfBoundsException('メッセージ', 404) のようにコンストラクタの第2引数で指定します。例外コードを設定すると、エラーメッセージの文字列に頼らず、数値によってエラーの種類を判別できるため、より確実なエラー処理の分岐が可能になります。もし例外コードを指定しなかった場合、getCode()はデフォルトで0を返します。このため、意図的に0をコードとして使う場合は、未設定との区別がつかない点に注意が必要です。OutOfBoundsExceptionは配列の範囲外アクセスを示すための例外で、エラーハンドリングをより明確にするために役立ちます。
PHP OutOfBoundsExceptionのエラーコードを取得する
1<?php 2 3/** 4 * 配列から指定されたインデックスの要素を取得します。 5 * インデックスが存在しない場合は、エラーコード付きの例外をスローします。 6 * 7 * @param array $data 対象の配列 8 * @param int $index 取得したい要素のインデックス 9 * @return mixed 配列の要素 10 * @throws OutOfBoundsException インデックスが範囲外の場合 11 */ 12function getElement(array $data, int $index): mixed 13{ 14 // 配列に指定されたインデックスが存在するかチェック 15 if (!isset($data[$index])) { 16 // 存在しない場合、OutOfBoundsExceptionをスローする 17 // 第1引数: エラーメッセージ 18 // 第2引数: エラーコード (任意の整数) 19 throw new OutOfBoundsException('指定されたインデックスは範囲外です。', 404); 20 } 21 22 return $data[$index]; 23} 24 25// サンプルの配列 26$colors = ['red', 'green', 'blue']; 27 28try { 29 // 存在しないインデックス(10)にアクセスしようと試みる 30 echo getElement($colors, 10); 31} catch (OutOfBoundsException $e) { 32 // 例外がキャッチされた場合の処理 33 echo "エラーが発生しました。" . PHP_EOL; 34 // getMessage()で例外に設定されたメッセージを取得 35 echo "メッセージ: " . $e->getMessage() . PHP_EOL; 36 // getCode()で例外に設定されたエラーコードを取得 37 echo "エラーコード: " . $e->getCode() . PHP_EOL; 38}
このサンプルコードは、例外処理における getCode() メソッドの役割を解説するものです。OutOfBoundsException は、配列などで範囲外のインデックスにアクセスしようとした際に発生する例外の一種です。
getElement 関数は、配列に指定されたインデックスが存在しない場合、throw new OutOfBoundsException() を使って意図的に例外を発生させます。このとき、第1引数にエラーメッセージ、第2引数にエラーコードとして任意の整数(この例では 404)を設定しています。
try ブロック内で getElement 関数を呼び出し、catch ブロックで発生した OutOfBoundsException を捕捉しています。getCode() メソッドは、この例外オブジェクト ($e) に設定されたエラーコードを取得するためのものです。このメソッドに引数はなく、戻り値として整数 (int) 型のエラーコードが返されます。サンプルコードの実行結果では、throw 時に設定した 404 が表示されます。このように getCode() を使うことで、エラーメッセージだけでなく、プログラムでエラーの種類を識別し、処理を分岐させるために利用できる数値コードをエラー情報に含めることができます。
getCode()は、例外発生時に設定された整数値の「エラーコード」を取得するメソッドです。このエラーコードは、throw new OutOfBoundsException('...', 404);のように、例外インスタンスを作成する際の第2引数でプログラマが任意に指定します。この引数を省略した場合、エラーコードはデフォルトで0になります。catchブロック内では、取得したエラーコードの値によって処理を分岐させることが可能です。例えば、if ($e->getCode() === 404)のように記述し、特定のエラーに対応した処理を実行できます。これは、人が読むためのエラーメッセージを取得するgetMessage()とは異なり、プログラムがエラーの種類を識別して処理を制御するために利用されます。