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

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

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

作成日: 更新日:

基本的な使い方

getCodeメソッドは、スローされた例外に設定されている例外コードを取得するために使用されるメソッドです。このメソッドは、PHPのすべての例外クラスの基底となるExceptionクラスで定義されており、OverflowExceptionクラスもこれを継承しています。例外コードとは、例外が発生した具体的な原因をプログラム的に識別するための整数値であり、例外をスローする際にコンストラクタの第二引数として指定します。try...catchブロックでOverflowExceptionを捕捉した際に、このメソッドを呼び出すことで、あらかじめ設定されたコードを取得できます。取得したコードを条件分岐などで使用することにより、同じ種類の例外であっても発生箇所や原因に応じて処理を切り替えるなど、より詳細なエラーハンドリングを実装することが可能になります。これにより、アプリケーションの堅牢性を高めることができます。もし、例外がスローされる際に例外コードが明示的に指定されなかった場合、getCodeメソッドはデフォルトで0を返します。

構文(syntax)

1<?php
2try {
3    // 例外コードを指定してOverflowExceptionをスローします
4    throw new OverflowException("An overflow error has occurred.", 100);
5} catch (OverflowException $e) {
6    // 例外オブジェクトからコードを取得します
7    $exceptionCode = $e->getCode();
8    echo $exceptionCode; // 100
9}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int|string

このメソッドは、例外が発生した際のコードを整数または文字列で返します。

サンプルコード

OverflowException::getCode()で例外コードを取得する

1<?php
2
3/**
4 * OverflowException::getCode() の使用例を示す関数。
5 * 意図的にデータ構造をオーバーフローさせ、例外を捕捉します。
6 */
7function demonstrate_overflow_exception_getcode(): void
8{
9    // 例: 最大容量が3の固定サイズのタスクリスト
10    $taskList = [];
11    $maxSize = 3;
12    // 独自のエラーコードを定義
13    define('ERROR_CODE_TASK_LIST_FULL', 1001);
14
15    try {
16        // タスクを3つ追加 (ここまでは正常に動作)
17        for ($i = 1; $i <= $maxSize; $i++) {
18            echo "タスク{$i}を追加しました。" . PHP_EOL;
19            $taskList[] = "タスク{$i}";
20        }
21
22        // 4つ目のタスクを追加しようとする
23        echo "4つ目のタスクを追加しようと試みます..." . PHP_EOL;
24        if (count($taskList) >= $maxSize) {
25            // 容量を超えたため、OverflowExceptionをスローする
26            // 第1引数: 例外メッセージ
27            // 第2引数: 例外コード(プログラムでエラーの種類を識別するために使用)
28            throw new OverflowException(
29                "タスクリストが満杯です。",
30                ERROR_CODE_TASK_LIST_FULL
31            );
32        }
33    } catch (OverflowException $e) {
34        // スローされたOverflowExceptionを捕捉する
35        echo PHP_EOL;
36        echo "---- 例外を捕捉しました ----" . PHP_EOL;
37        echo "メッセージ: " . $e->getMessage() . PHP_EOL;
38
39        // getCode() メソッドを使って、例外に設定されたコードを取得する
40        $code = $e->getCode();
41        echo "例外コード: " . $code . PHP_EOL;
42
43        // 取得したコードに基づいて処理を分岐させる
44        if ($code === ERROR_CODE_TASK_LIST_FULL) {
45            echo "対応処理: タスクリストの容量オーバーが検出されたため、処理を中断します。" . PHP_EOL;
46        }
47    }
48}
49
50// 関数を実行して動作を確認する
51demonstrate_overflow_exception_getcode();

OverflowException::getCode()は、スロー(発生)された例外オブジェクトに設定されている「例外コード」を取得するためのメソッドです。例外コードは、エラーの種類をプログラムで識別するために使われる数値や文字列のことです。

このサンプルコードは、最大容量が3のタスクリストが満杯になる状況を意図的に作り出しています。tryブロック内で4つ目のタスクを追加しようとすると、容量オーバーと判断され、OverflowExceptionがスローされます。このとき、new OverflowException()の第2引数に、独自に定義したエラーコード1001が設定されています。

catchブロックでこの例外を捕捉した後、$e->getCode()を呼び出すことで、例外に設定されたコードを取得できます。このメソッドは引数を取らず、戻り値として整数または文字列型のコードを返します。この例では、1001が返されます。

このように取得した例外コードを使うことで、if文などでエラーの種類を正確に判定し、コードに応じた適切な処理を実行できます。エラーメッセージの文字列内容に頼らずに処理を分岐させられるため、より信頼性の高いエラーハンドリングが可能になります。

getCode()メソッドは、発生した例外(エラー)の種類をプログラムが識別するためのコードを取得するために使います。このコードは、throw new OverflowException(...) のように例外を発生させる際、第2引数で自分で設定します。もし指定しなければ、コードは 0 になります。getMessage() が人間に向けたエラーメッセージなのに対し、getCode() で得たコードは、if文などでエラーの種類に応じた処理を自動的に振り分ける目的で利用されます。サンプルコードのように、独自に定義した定数と比較することで、特定のエラーが発生したことを正確に判定し、専用の対応処理を実行できます。

PHP Exception getCode()で例外コードを取得する

1<?php
2
3declare(strict_types=1);
4
5/**
6 * 固定サイズのデータキューを表すクラス。
7 */
8class FixedQueue
9{
10    private array $items = [];
11    private int $maxSize;
12
13    public function __construct(int $maxSize)
14    {
15        $this->maxSize = $maxSize;
16    }
17
18    /**
19     * キューにアイテムを追加します。
20     * キューが満杯の場合は OverflowException をスローします。
21     *
22     * @param mixed $item 追加するアイテム
23     * @throws OverflowException キューが満杯の場合
24     */
25    public function enqueue(mixed $item): void
26    {
27        if (count($this->items) >= $this->maxSize) {
28            // キューが満杯の場合、OverflowExceptionをスローする。
29            // 第2引数で、この例外状況を表すコード(例: 1001)を指定する。
30            throw new OverflowException(
31                "Queue is full. Cannot add more items.",
32                1001
33            );
34        }
35        $this->items[] = $item;
36        echo "Added item: " . $item . PHP_EOL;
37    }
38}
39
40// メイン処理
41try {
42    // 最大サイズが2のキューを作成
43    $queue = new FixedQueue(2);
44
45    $queue->enqueue('A');
46    $queue->enqueue('B');
47
48    // 3つ目のアイテムを追加しようとすると、例外が発生する
49    $queue->enqueue('C');
50
51} catch (OverflowException $e) {
52    // OverflowExceptionを捕捉する
53
54    // getCode()メソッドを使って、throw時に指定された例外コードを取得・表示する
55    $code = $e->getCode();
56    echo "--------------------------" . PHP_EOL;
57    echo "Caught an exception!" . PHP_EOL;
58    echo "Exception Code: " . $code . PHP_EOL; // 出力: Exception Code: 1001
59    echo "Exception Message: " . $e->getMessage() . PHP_EOL;
60}

PHPのOverflowException::getCode()メソッドは、発生した例外に設定された「例外コード」を取得するために使用します。例外コードは、エラーの種類をプログラムで識別しやすくするための番号や文字列で、開発者が任意に設定できます。

このサンプルコードでは、最大サイズが固定されたデータキュー(FixedQueue)を扱っています。キューが満杯の状態でさらにデータを追加しようとすると、容量オーバーを示すOverflowExceptionが発生するように作られています。

例外を発生させるthrow new OverflowException(...)の部分では、第1引数にエラーメッセージ、第2引数に例外コードとして1001を指定しています。

try...catchブロックでこの例外を捕捉した後、$e->getCode()を呼び出しています。このメソッドは引数を取らず、throw時に設定された例外コード(この場合は1001)を戻り値として返します。戻り値の型は整数(int)または文字列(string)です。取得したコードを利用することで、エラーログに詳細を記録したり、コードの値に応じて処理を分岐させたりすることが可能になります。

getCode()メソッドは、例外の種類をプログラムで識別するための「エラーコード」を取得します。これは人間が読むためのgetMessage()とは異なり、主に機械的なエラー処理に利用されます。このコードは、throw new OverflowException(...)のように例外を発生させる際の第2引数で指定した数値や文字列です。もしこの引数を省略した場合、getCode()の戻り値はデフォルトで0になる点に注意してください。取得したコードを使うと、switch文などでエラーの種類に応じて処理を細かく分岐させることが可能になります。例外を確実に扱うためには、try...catchブロックで対象の例外を正しく捕捉することが不可欠です。

関連コンテンツ

関連プログラミング言語