ASP.NET Coreの例外フィルターを完全解説!初心者でもわかるエラーハンドリング入門
生徒
「ASP.NET Coreでエラーが起きたときって、どうやってまとめて処理するんですか?」
先生
「ASP.NET Coreでは、例外フィルターを使うと、エラー処理を一か所に集めて管理できます。」
生徒
「エラーが起きるたびに全部の画面に書かなくていいんですか?」
先生
「その通りです。では、例外フィルターの仕組みと使い方を順番に見ていきましょう。」
1. ASP.NET Coreにおける例外とは?
ASP.NET Coreでいう例外とは、プログラムを実行している途中で発生する予期しないトラブルのことです。たとえば、存在しないデータを読み込もうとしたり、計算できない処理を行った場合に発生します。初心者の方は、例外を「アプリがびっくりして止まってしまう状態」とイメージするとわかりやすいです。
エラーをそのままにすると、画面が真っ白になったり、英語だらけの画面が表示されてしまいます。そのため、ASP.NET Coreではエラーハンドリングという仕組みを使って、安全にエラーを処理します。
2. 例外フィルターとは何か?
例外フィルターとは、ASP.NET Coreで発生した例外をまとめてキャッチし、共通の処理を行うための仕組みです。MVCやWeb APIで特に使われます。
たとえるなら、学校の保健室の先生のような存在です。クラスごとに対応するのではなく、体調不良が起きたら全員が保健室に行く、というイメージです。例外フィルターを使うと、エラー処理を一か所にまとめることができます。
3. 例外フィルターを使うメリット
ASP.NET Coreで例外フィルターを活用すると、多くのメリットがあります。まず、コードがすっきりします。各画面や処理ごとにエラー対応を書く必要がなくなります。
また、エラー表示を統一できる点も重要です。ユーザーに見せるメッセージを同じ形式にできるため、安心感のあるWebアプリになります。さらに、ログ管理とも相性が良く、エラー内容を記録しやすくなります。
4. 例外フィルターの基本的な作り方
ASP.NET Coreでは、例外フィルター用のクラスを作成します。まずは、基本的な形を見てみましょう。難しそうに見えても、流れを追えば大丈夫です。
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
public class SimpleExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
context.Result = new ContentResult
{
Content = "エラーが発生しました。しばらくしてから再度お試しください。"
};
context.ExceptionHandled = true;
}
}
このコードでは、エラーが起きたときに同じメッセージを表示します。IExceptionFilterは「例外が起きたら呼ばれる約束事」と覚えてください。
5. コントローラーに例外フィルターを設定する方法
作成した例外フィルターは、コントローラーに設定して使います。設定することで、その画面内で発生した例外を自動で処理してくれます。
[TypeFilter(typeof(SimpleExceptionFilter))]
public class HomeController : Controller
{
public IActionResult Index()
{
throw new Exception("テスト用の例外");
}
}
このように設定すると、Index画面でエラーが起きても、共通のメッセージが表示されます。初心者の方は「貼り付けるだけで動く」と考えて問題ありません。
6. 全体に適用する例外フィルター
ASP.NET Coreでは、アプリ全体に例外フィルターを適用することもできます。これは「どの画面でも同じルールでエラーを処理したい」場合に便利です。
services.AddControllers(options =>
{
options.Filters.Add<SimpleExceptionFilter>();
});
この設定を行うと、すべてのコントローラーで例外フィルターが有効になります。アプリ全体のエラーハンドリングを一元管理できる点が大きな特徴です。
7. ログ管理と例外フィルターの関係
ASP.NET Coreの例外フィルターは、ログ管理とも深く関係しています。ログとは、アプリの動作記録のことです。例外が発生した内容をログに残すことで、後から原因を調べることができます。
例外フィルター内でログ出力を行えば、「いつ」「どこで」「どんなエラーが起きたか」をまとめて記録できます。これは運用中のWebアプリにとって非常に重要なポイントです。
8. 初心者がつまずきやすいポイント
例外フィルターを使い始めた初心者がよく困るのが、「エラーが表示されなくなった」という点です。これは、例外を処理済みにしているためです。意図的な動作なので、慌てなくて大丈夫です。
また、例外フィルターは「エラー専用の仕組み」であることを忘れないでください。通常の画面表示や条件分岐とは役割が違います。役割を分けて考えることで、ASP.NET Coreの理解が一気に進みます。