PHPのカスタム例外クラスを完全ガイド!初心者でもわかる例外処理とthrowの基本
生徒
「PHPの例外処理って使ったことがありますが、カスタム例外クラスというものもあるんですか?」
先生
「ありますよ。PHPでは自分で例外クラスを作ることで、エラーをよりわかりやすく分類できるようになります。」
生徒
「普通のExceptionと何が違うんですか?難しく感じます…」
先生
「今回は初心者でも理解できるように、extends Exception の意味から、throw を使った実践例まで優しく説明しますね!」
1. PHPのカスタム例外クラスとは?
PHPの「カスタム例外クラス」とは、自分専用の例外(エラー)を作る仕組みです。普通の例外処理では Exception クラスを使いますが、
自分でクラスを作っておくと、エラーの種類を細かく分類でき、プログラムの動作をより理解しやすくなります。
例えば、買い物アプリを想像してみてください。商品が見つからないときと、在庫が足りないときは別のエラーですよね。 同じ「エラー」でも意味が違うため、それぞれ専用の例外を作ると処理が整理され、エラーハンドリングがとてもわかりやすくなります。
PHPでは、クラスを作るときに extends Exception と書くことで、
「Exception をもとにした自分だけの例外クラス」が作れます。これは、親の機能を引き継いで新しい機能を追加できる「継承」という考え方です。
2. カスタム例外クラスの基本的な作り方
ここでは実際に、PHPでカスタム例外クラスを作る方法を紹介します。まずはもっとも基本的な例です。
class MyException extends Exception
{
}
これは一番シンプルなカスタム例外クラスです。中身は空ですが、これだけでオリジナル例外が作れます。 このクラスを使うと、普通の Exception と区別して処理できます。
3. カスタム例外をthrowして実際に使ってみよう
自分で作った例外クラスは、普通の例外と同じように throw を使って発生させます。
そして try-catch の catch で受け取れば、エラーをキャッチできます。
class MyException extends Exception {}
try {
throw new MyException("カスタム例外が発生しました!");
} catch (MyException $e) {
echo $e->getMessage();
}
このコードでは、自分で作った MyException を throw で投げて、catch で受け取っています。
つまり、自分だけの特別な例外として処理できるということです。
実際の開発では、例えば「ユーザーが見つからない」「データが無効」など、 状況に応じて複数のカスタム例外を作り、わかりやすいエラーメッセージを返すことがよくあります。
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. 複数のカスタム例外を使い分けると何が良いの?
カスタム例外クラスを使う最大のメリットは、エラーの種類を分類できることです。 たとえばデータベースのエラーとユーザー入力のエラーは、原因も対処方法もまったく違います。
そこで、入力エラー、認証エラー、通信エラー…とカスタム例外を分けておくと、プログラムのエラー処理が明確で読みやすくなります。
また、大規模開発ではチームの別の人が見たときも、「この例外は何を意味するのか」がすぐわかるため、 コードの品質を上げることにもつながります。