【サクッと解説】PHP try-catch構文で例外処理を行う方法

目次

1. 本記事のポイント

  • PHPにおける例外処理の基本構文try-catchの使い方を解説
  • Exceptionクラスの使い方と独自例外の扱いについても紹介
  • 実務でのエラーハンドリング設計の注意点を含めて説明

2. PHPのtry-catch構文とは?

PHPのtry-catch構文は、例外(Exception)を捕捉して処理するための構文です。
ファイル操作、外部API呼び出し、DB接続など、実行時に失敗の可能性がある処理に対して、安全にエラー処理を実装するために使います。

PHPでは、tryブロック内で例外がスローされると、即座にcatchブロックへ制御が移ります。
catchブロックでは、その例外オブジェクトを受け取り、ログ出力やユーザー向けエラーメッセージの表示などを行います。

また、throwを使って任意のタイミングで例外を発生させることも可能です。
例外処理はPHP5以降で導入されたもので、現代的なPHPアプリケーションでは欠かせない設計要素のひとつです。

3. 詳細解説

基本的なtry-catchの構文

ファイルの読み込みに失敗した場合の例外処理を行うコード例です。

PHP
<?php
try {
    // 存在しないファイルを開く
    $contents = file_get_contents('not_exist.txt');
    echo $contents;
} catch (Exception $e) {
    // 例外が発生した場合の処理
    echo 'エラーが発生しました: ' . $e->getMessage();
}

このコードでは、ファイルが存在しないとExceptionがスローされ、catchブロックで処理されます。

複数の例外タイプを処理する

異なる例外クラスごとに処理を分けたい場合は、複数のcatchブロックを使います。

PHP
<?php
try {
    // 任意のロジック(例:DB接続)
    throw new InvalidArgumentException("引数が不正です");
} catch (InvalidArgumentException $e) {
    echo "引数エラー: " . $e->getMessage();
} catch (Exception $e) {
    echo "その他のエラー: " . $e->getMessage();
}

このようにすることで、エラー種別ごとの適切な対応が可能になります。

独自の例外クラスを定義する

ドメイン固有のエラーを扱う場合は、独自の例外クラスを定義するのが一般的です。

PHP
<?php
// 独自例外クラスの定義
class CustomException extends Exception {}

try {
    throw new CustomException("カスタム例外が発生しました");
} catch (CustomException $e) {
    echo "カスタム処理: " . $e->getMessage();
} catch (Exception $e) {
    echo "その他の処理: " . $e->getMessage();
}

独自クラスにより、エラー内容の意味づけやログ設計が明確になります。

4. よくあるミス・誤解・落とし穴

  • try-catchを使っても、全てのエラーが例外になるわけではありません。file_get_contents()のような関数は、エラー時に例外ではなく警告を発する場合もあるため、明示的なラッパーが必要です。
  • PHPのError(致命的エラー)とExceptionは別物です。PHP7以降はThrowableをcatchすることでどちらも捕捉可能ですが、対応バージョンに注意してください。
  • catch (Exception $e) の中で例外を再スロー(throw $e)することで、上位層で再処理可能ですが、例外を握りつぶしてしまうコードは避けるべきです。

5. まとめ

  • try-catch構文は、実行時エラーを安全に処理するための基本構文
  • Exceptionや独自例外を活用することで、エラーロジックを明確化できる
  • 全てのエラーが例外になるわけではない点に注意し、必要に応じて補助的な対策も検討が必要
よかったらシェアしてね!
  • URLをコピーしました!
目次