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

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

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

作成日: 更新日:

基本的な使い方

getCodeメソッドは、PHPのAssertionErrorクラスに属し、エラーに関連付けられたコード番号を取得するメソッドです。AssertionErrorは、assert()関数を用いて記述されたプログラムの前提条件が満たされなかった場合に発生する、PHP 7から導入されたエラータイプの一つです。このメソッドは、発生したエラーに特定の数値コードが設定されている場合に、そのコード番号を整数値として返します。

エラーコードは、通常、エラーの種類を識別するために利用されます。例えば、アプリケーション内で異なる種類のアサーションエラーが発生する可能性がある場合、それぞれに固有のコードを設定することで、エラーハンドリングの際にどの種類のエラーが発生したのかをプログラムで判別し、適切な処理を分岐させることが可能になります。これにより、開発者はより詳細かつ柔軟なエラー対応ロジックを構築することができます。

PHPの標準的なエラーや例外の多くは、getCodeメソッドに対してデフォルトで0を返すことが一般的ですが、開発者は独自の例外クラスやエラー処理の中で、目的や状況に応じて任意の整数値をエラーコードとして設定することができます。getCodeメソッドを利用することで、プログラムはエラーの詳細な情報を取得し、その情報を基に効率的かつ堅牢なエラー処理を実現します。

構文(syntax)

1<?php
2
3$assertionError = new AssertionError("An example assertion message.");
4$errorCode = $assertionError->getCode();

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

AssertionError クラスの getCode メソッドは、アサーションエラーが発生した際に指定されたエラーコードを整数型 (int) で返します。

サンプルコード

PHP AssertionError getCode()でエラーコードを取得する

1<?php
2
3/**
4 * AssertionErrorの発生とgetCode()メソッドの利用例を示す関数。
5 *
6 * この関数は、PHPのアサーション機能を使って意図的にAssertionErrorを発生させ、
7 * そのエラーを捕捉してgetCode()メソッドでエラーコードを取得する方法を示します。
8 * システムエンジニアを目指す初心者の方が、例外処理とエラーコードの取得方法を
9 * 理解するのに役立ちます。
10 */
11function demonstrateAssertionErrorGetCode(): void
12{
13    // アサーションが失敗した際にAssertionErrorをスローするように設定します。
14    // PHP 8では 'assert.exception' ディレクティブがデフォルトで有効なことが多いですが、
15    // 明示的に設定することで意図が明確になり、動作の確実性が増します。
16    assert_options(ASSERT_ACTIVE, 1);    // アサーションを有効にします。
17    assert_options(ASSERT_WARNING, 0);   // 警告を無効にします (AssertionErrorをスローするため)。
18    assert_options(ASSERT_EXCEPTION, 1); // アサーション失敗時にAssertionErrorをスローします。
19
20    try {
21        echo "アサーションを実行します...\n";
22
23        // 意図的にfalseとなるアサーションを実行します。
24        // 第2引数にAssertionErrorオブジェクトを直接渡し、カスタムエラーコード (1001) を設定します。
25        $expectedValue = 10;
26        $actualValue = 5;
27        assert(
28            $actualValue === $expectedValue,
29            new AssertionError('値が期待する値 (' . $expectedValue . ') と異なります。', 1001)
30        );
31
32        // 上記のアサーションは失敗するため、この行は実行されません。
33        echo "アサーションは成功しました。\n";
34
35    } catch (AssertionError $e) {
36        // AssertionErrorが発生した場合、このcatchブロックで捕捉されます。
37        echo "AssertionErrorが発生しました!\n";
38        echo "メッセージ: " . $e->getMessage() . "\n";
39        // getCode()メソッドを呼び出して、AssertionErrorに設定されたエラーコードを取得します。
40        echo "エラーコード: " . $e->getCode() . "\n";
41    } catch (Throwable $e) {
42        // AssertionError以外の予期せぬエラーが発生した場合に捕捉します。
43        echo "予期せぬエラーが発生しました: " . $e->getMessage() . "\n";
44        echo "エラーコード: " . $e->getCode() . "\n";
45    }
46}
47
48// 上記で定義した関数を実行します。
49demonstrateAssertionErrorGetCode();

このサンプルコードは、PHPのアサーション機能を使って意図的にAssertionErrorを発生させ、そのエラーを捕捉した際にgetCode()メソッドを利用してエラーコードを取得する方法を示しています。AssertionErrorは、PHPのアサーション(プログラムの特定の状態が真であると仮定する機能)が失敗し、例外としてスローされるように設定されている場合に発生するエラークラスです。

コードではまず、assert_options()関数でアサーションが失敗した際にAssertionErrorをスローするよう設定しています。次にtry-catchブロック内で、assert()関数を使って意図的に失敗する条件を記述しています。このとき、assert()関数の第2引数にnew AssertionError()のインスタンスを渡し、メッセージと共にカスタムのエラーコード(例: 1001)を設定しています。

アサーションが失敗すると、catch (AssertionError $e)ブロックでエラーが捕捉されます。このブロック内で$e->getCode()を呼び出すことにより、AssertionError発生時に設定したエラーコード(この例では1001)をint型で取得できます。getCode()メソッドは引数を取りません。これにより、システムエンジニアは発生したエラーを数値で識別し、エラーの種類に応じた適切な処理やログ記録を行うことが可能になります。

このサンプルコードは、assert_optionsでアサーション失敗時にAssertionErrorをスローする設定と、try-catchによるエラー捕捉の基本を示しています。assert()関数の第2引数にAssertionErrorオブジェクトを渡すことで、独自の数値エラーコードを設定できる点が重要です。getCode()メソッドは、この設定されたエラーコードを簡単に取得し、エラーハンドリングに活用できます。AssertionErrorは例外ですので、プログラムの予期せぬ停止を防ぐため、必ずtry-catchブロックで適切に処理してください。エラーコードの活用は、システム内の様々なエラーを数値で識別し、それに応じた詳細な処理を行う際に非常に有効です。

関連コンテンツ