カテゴリ: Symfony 更新日: 2025/10/29

Symfonyのコントローラで例外処理を追加する方法をやさしく解説!初心者でも安心して学べる

Symfonyのコントローラで例外処理を追加する方法
Symfonyのコントローラで例外処理を追加する方法

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

生徒

「Symfonyのコントローラで、エラーが出たときに止まらずに対応できる方法ってありますか?」

先生

「はい、Symfonyでは例外処理(れいがいしょり)という仕組みを使って、エラーが発生したときに適切な対応をすることができます。」

生徒

「その例外処理って難しそうですが、初心者でも使えますか?」

先生

「もちろんです!初心者でも分かるように、例え話を交えながら丁寧に説明していきましょう。」

1. 例外(エラー)ってなに?初心者向けにわかりやすく解説

1. 例外(エラー)ってなに?初心者向けにわかりやすく解説
1. 例外(エラー)ってなに?初心者向けにわかりやすく解説

例外(れいがい)とは、プログラムを動かしている最中に、想定外の問題が起きたときに出るエラーの一種です。

たとえば、冷蔵庫から卵を取り出して料理を作ろうとしたのに、実は卵が切れていたらどうでしょう?この「卵がない!」という状況が、プログラムでいう例外なのです。

プログラムでも「データが見つからない」「ファイルが壊れている」「数字ではない文字が入っていた」などの問題が発生することがあります。

このような問題が起きたときに、プログラムが止まらずに適切な処理をする方法が、例外処理です。

2. Symfonyのコントローラってなに?

2. Symfonyのコントローラってなに?
2. Symfonyのコントローラってなに?

コントローラとは、Symfonyアプリケーションでユーザーからのリクエスト(例えば、URLにアクセスしたとき)を受け取って、適切な処理をする部分です。

言いかえると、料理人のような役割をしています。「お客さん(ユーザー)が何を注文(リクエスト)したか」を受け取り、「適切な料理(レスポンス)を出す」役割です。

このコントローラの中で、予期せぬエラーが発生したときに備えて例外処理を入れることで、アプリケーションが落ちるのを防ぐことができます。

3. Symfonyでの例外処理の基本的な書き方

3. Symfonyでの例外処理の基本的な書き方
3. Symfonyでの例外処理の基本的な書き方

Symfonyのコントローラで例外処理をするには、trycatch という仕組みを使います。これは「もし何か問題があったら、それをキャッチ(つかむ)して別の処理をする」という意味です。

次のようなコードで書くことができます。


use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class SampleController
{
    #[Route('/example', name: 'example')]
    public function example(): Response
    {
        try {
            // ここにエラーが起きる可能性のある処理を書く
            $result = 10 / 0; // これはゼロで割っているのでエラーになる

            return new Response("結果: " . $result);
        } catch (\Throwable $e) {
            // 例外が起きたときの処理
            return new Response("エラーが発生しました: " . $e->getMessage());
        }
    }
}

4. このコードの動きと初心者向けの例え

4. このコードの動きと初心者向けの例え
4. このコードの動きと初心者向けの例え

このコードでは、tryブロックの中で10を0で割るという処理をしています。数学ではゼロで割ることはできないので、エラーが発生します。

しかし、このエラーは catchブロックでつかまえて、「エラーが発生しました」というメッセージを表示します。これによってプログラムが途中で止まらずにすみます

たとえば料理で言えば、「包丁で手を切ってしまったときに、止血して続ける」ようなものです。失敗しても止まらずに続けられる仕組みがあるということです。

5. よくある例外の種類と対応方法

5. よくある例外の種類と対応方法
5. よくある例外の種類と対応方法

Symfonyのコントローラでよくある例外には、以下のようなものがあります。

  • DivisionByZeroError:ゼロで割ったとき
  • TypeError:型が合わないとき(数字じゃないものに数字の操作をしたなど)
  • RuntimeException:プログラムの実行時に予期せぬ問題が起きたとき

これらを個別に処理することもできますし、すべてをまとめて\ThrowableでキャッチしてもOKです。

6. Symfonyで独自のエラーメッセージを表示したいとき

6. Symfonyで独自のエラーメッセージを表示したいとき
6. Symfonyで独自のエラーメッセージを表示したいとき

catchの中で、エラーメッセージを自由に変更することができます。ユーザーにやさしい文章に変えてみましょう。


return new Response("ただいまシステムに問題が発生しています。しばらくしてからお試しください。");

これで、プログラムの中身を知らない一般のユーザーにもやさしい対応ができます。

7. 複数の例外を個別に処理する方法

7. 複数の例外を個別に処理する方法
7. 複数の例外を個別に処理する方法

例外の種類によって、対応を変えたいときは、catchを複数使うこともできます。


try {
    // エラーの起きる可能性がある処理
} catch (\DivisionByZeroError $e) {
    return new Response("ゼロでは割れません。");
} catch (\TypeError $e) {
    return new Response("型が間違っています。");
} catch (\Throwable $e) {
    return new Response("その他のエラーが発生しました。");
}

このようにすれば、エラーの内容に応じて丁寧に対応することができます。

8. まとめ:例外処理は保険のようなもの

8. まとめ:例外処理は保険のようなもの
8. まとめ:例外処理は保険のようなもの

例外処理は、いざというときの保険のようなものです。日常生活でも、何か問題が起きたときに備えて準備をしますよね。

Symfonyのコントローラでも、問題が起きる可能性のある処理にはtrycatchを使って、プログラムが止まらないように対策しましょう。

今回紹介した方法は、初心者でも安心して取り入れられる基本の形なので、ぜひ実際に書いてみてください。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド