カテゴリ: Symfony 更新日: 2026/02/11

Symfonyのカスタム例外クラスを完全解説!初心者でもわかる例外処理とデバッグ入門

Symfonyのカスタム例外クラスを作成する方法
Symfonyのカスタム例外クラスを作成する方法

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

生徒

「Symfonyでエラーが出たんですが、英語ばかりで何が起きているのかわかりません…」

先生

「Symfonyでは、エラーを『例外』という仕組みで管理しています。」

生徒

「例外って何ですか?エラーとは違うんですか?」

先生

「エラーを整理して、分かりやすく伝えるための仕組みだと思ってください。自分で作ることもできますよ。」

1. Symfonyの例外処理とは?

1. Symfonyの例外処理とは?
1. Symfonyの例外処理とは?

Symfonyの例外処理とは、プログラムの実行中に問題が起きたときに、その状況を安全に知らせるための仕組みです。パソコンを触ったことがない人でも、炊飯器がエラー音を鳴らして教えてくれる場面を想像すると分かりやすいです。Symfonyでは、この「エラーのお知らせ役」を例外と呼びます。

例外を使うことで、どこで何が問題だったのかを開発者がすぐに理解でき、Symfonyのデバッグ作業がとても楽になります。

2. 例外とエラーの違いをやさしく解説

2. 例外とエラーの違いをやさしく解説
2. 例外とエラーの違いをやさしく解説

エラーは、プログラムが止まってしまう重大なトラブルです。一方、例外は「問題は起きたけれど、どう対応するかを選べる状態」です。Symfonyでは例外を使うことで、画面に分かりやすいメッセージを出したり、ログに記録したりできます。

初心者のうちは「Symfonyではエラーを例外として扱う」と覚えておくだけで十分です。

3. Symfonyでカスタム例外クラスを作る理由

3. Symfonyでカスタム例外クラスを作る理由
3. Symfonyでカスタム例外クラスを作る理由

カスタム例外クラスとは、自分専用の例外を作ることです。例えば「ユーザーが見つからない」「入力内容が間違っている」など、状況ごとに名前を付けられます。

Symfonyでカスタム例外を作ると、コードが読みやすくなり、デバッグもしやすくなります。初心者でも「何が起きたのか」を日本語で理解しやすくなるのが大きなメリットです。

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

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

Symfonyでは、PHPのクラスという仕組みを使ってカスタム例外を作ります。クラスとは「設計図」のようなものです。


<?php
namespace App\Exception;

use Exception;

class UserNotFoundException extends Exception
{
}

この例では「ユーザーが見つからない」という状況専用の例外を作っています。extends Exceptionは「例外の仲間ですよ」という意味です。

5. 作成したカスタム例外を投げてみよう

5. 作成したカスタム例外を投げてみよう
5. 作成したカスタム例外を投げてみよう

例外は投げるという表現をします。難しく聞こえますが、「問題が起きたと知らせる」だけです。


<?php
if ($user === null) {
    throw new UserNotFoundException('ユーザーが見つかりません');
}

ここでは、ユーザーが存在しない場合にカスタム例外を発生させています。Symfonyの例外処理では、このようにして問題を明確にします。

6. カスタム例外を受け取って処理する方法

6. カスタム例外を受け取って処理する方法
6. カスタム例外を受け取って処理する方法

投げた例外は、catchという仕組みで受け取ります。これは「キャッチボールで受け取る」イメージです。


<?php
try {
    // 何かの処理
} catch (UserNotFoundException $e) {
    echo $e->getMessage();
}

Symfonyでは、この仕組みを使ってエラーページを表示したり、ログを残したりします。初心者でも「例外を受け取って表示する」と考えれば大丈夫です。

7. Symfonyのデバッグで役立つポイント

7. Symfonyのデバッグで役立つポイント
7. Symfonyのデバッグで役立つポイント

Symfonyのデバッグでは、カスタム例外を使うことで「どこで」「何が」起きたのかが一目で分かります。特に開発中は、エラーメッセージを具体的に書くことが重要です。


<?php
throw new \RuntimeException('予期しないエラーが発生しました');

このように、メッセージを工夫するだけでもデバッグのしやすさが大きく変わります。

8. 初心者がつまずきやすい注意点

8. 初心者がつまずきやすい注意点
8. 初心者がつまずきやすい注意点

Symfonyの例外処理でよくある失敗は、例外を作っただけで満足してしまうことです。必ず「どこで投げて、どこで受け取るか」を意識しましょう。

また、難しい英語のクラス名よりも、自分が理解できる名前を付けることが大切です。Symfonyは柔軟なので、初心者でも安心してカスタム例外を使えます。

カテゴリの一覧へ
新着記事
New1
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New2
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New3
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New4
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.2
Java&Spring記事人気No2
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.3
Java&Spring記事人気No3
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.4
Java&Spring記事人気No4
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.5
Java&Spring記事人気No5
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでファクトリを使ってテストデータを作成する方法を完全解説!初心者向けLaravelテスト入門