カテゴリ: PHP 更新日: 2026/01/03

PHPのカスタム例外クラスを完全ガイド!初心者でもわかる例外処理とthrowの基本

PHP のカスタム例外クラスの作成方法(throw, extends Exception)
PHP のカスタム例外クラスの作成方法(throw, extends Exception)

先生と生徒の会話形式で理解しよう

生徒

「PHPの例外処理って使ったことがありますが、カスタム例外クラスというものもあるんですか?」

先生

「ありますよ。PHPでは自分で例外クラスを作ることで、エラーをよりわかりやすく分類できるようになります。」

生徒

「普通のExceptionと何が違うんですか?難しく感じます…」

先生

「今回は初心者でも理解できるように、extends Exception の意味から、throw を使った実践例まで優しく説明しますね!」

-

1. PHPのカスタム例外クラスとは?

1. PHPのカスタム例外クラスとは?
1. PHPのカスタム例外クラスとは?

PHPの「カスタム例外クラス」とは、自分専用の例外(エラー)を作る仕組みです。普通の例外処理では Exception クラスを使いますが、 自分でクラスを作っておくと、エラーの種類を細かく分類でき、プログラムの動作をより理解しやすくなります。

例えば、買い物アプリを想像してみてください。商品が見つからないときと、在庫が足りないときは別のエラーですよね。 同じ「エラー」でも意味が違うため、それぞれ専用の例外を作ると処理が整理され、エラーハンドリングがとてもわかりやすくなります。

PHPでは、クラスを作るときに extends Exception と書くことで、 「Exception をもとにした自分だけの例外クラス」が作れます。これは、親の機能を引き継いで新しい機能を追加できる「継承」という考え方です。

2. カスタム例外クラスの基本的な作り方

2. カスタム例外クラスの基本的な作り方
2. カスタム例外クラスの基本的な作り方

ここでは実際に、PHPでカスタム例外クラスを作る方法を紹介します。まずはもっとも基本的な例です。


class MyException extends Exception
{
}

これは一番シンプルなカスタム例外クラスです。中身は空ですが、これだけでオリジナル例外が作れます。 このクラスを使うと、普通の Exception と区別して処理できます。

3. カスタム例外をthrowして実際に使ってみよう

3. カスタム例外をthrowして実際に使ってみよう
3. カスタム例外をthrowして実際に使ってみよう

自分で作った例外クラスは、普通の例外と同じように throw を使って発生させます。 そして try-catchcatch で受け取れば、エラーをキャッチできます。


class MyException extends Exception {}

try {
    throw new MyException("カスタム例外が発生しました!");
} catch (MyException $e) {
    echo $e->getMessage();
}

このコードでは、自分で作った MyException を throw で投げて、catch で受け取っています。 つまり、自分だけの特別な例外として処理できるということです。

実際の開発では、例えば「ユーザーが見つからない」「データが無効」など、 状況に応じて複数のカスタム例外を作り、わかりやすいエラーメッセージを返すことがよくあります。

4. カスタム例外クラスに機能を追加する方法

4. カスタム例外クラスに機能を追加する方法
4. カスタム例外クラスに機能を追加する方法

カスタム例外クラスは、ただ作るだけではなく、独自のプロパティやメソッドを追加することもできます。 例えば、エラーコードや特別なメッセージを持たせると、エラー内容をより正確に把握できます。


class ValidationException extends Exception
{
    private $field;

    public function __construct($message, $field)
    {
        $this->field = $field;
        parent::__construct($message);
    }

    public function getField()
    {
        return $this->field;
    }
}

このクラスでは、どの入力項目でエラーが起きたのかを記録できます。 例えば、名前やメールアドレスが空だった場合にこの例外を使うと、エラーの原因が明確になります。

-

5. 複数のカスタム例外を使い分けると何が良いの?

5. 複数のカスタム例外を使い分けると何が良いの?
5. 複数のカスタム例外を使い分けると何が良いの?

カスタム例外クラスを使う最大のメリットは、エラーの種類を分類できることです。 たとえばデータベースのエラーとユーザー入力のエラーは、原因も対処方法もまったく違います。

そこで、入力エラー、認証エラー、通信エラー…とカスタム例外を分けておくと、プログラムのエラー処理が明確で読みやすくなります。

また、大規模開発ではチームの別の人が見たときも、「この例外は何を意味するのか」がすぐわかるため、 コードの品質を上げることにもつながります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
No.8
Java&Spring記事人気No8
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
-
-