エラーハンドリング

PHPの「エラーハンドリング(Error Handling)」とは、プログラム実行中に発生するエラーや例外に対処し、適切な対応を行う仕組みのことです。これにより、プログラムの予期しない終了を防ぎ、ユーザーに対して適切なメッセージを表示したり、ログを記録したりすることが可能になります。


1. エラーの種類

PHPには以下のようなエラーの種類があります。

  • パースエラー(Parse Error)
    構文ミスなどにより、スクリプトが解釈されないエラー。

  • 致命的エラー(Fatal Error)
    実行不可能な重大なエラー。例:存在しない関数を呼び出す。

  • 警告(Warning)
    実行は継続されるが、問題のある操作。例:存在しないファイルの読み込み。

  • 注意(Notice)
    軽微なエラー。例:未定義の変数へのアクセス。

  • ユーザーエラー(User Error)
    trigger_error()関数で手動で発生させるエラー。


2. 基本的なエラーハンドリング方法

error_reporting()ini_set()

エラーの出力レベルや表示有無を制御します。

php
error_reporting(E_ALL); ini_set('display_errors', 1);

set_error_handler()

カスタムのエラーハンドラ関数を定義できます。

php
function myErrorHandler($errno, $errstr, $errfile, $errline) { echo "エラー [$errno]: $errstr - $errfile:$errline"; } set_error_handler("myErrorHandler");

3. 例外処理(Exception Handling)

PHP 5以降では例外(Exception)を用いたより高度なエラーハンドリングが可能です。

try-catch構文

php
try { // エラーが発生する可能性のあるコード if (!file_exists("sample.txt")) { throw new Exception("ファイルが存在しません"); } } catch (Exception $e) { echo "例外発生: " . $e->getMessage(); }

finallyブロック

例外の有無にかかわらず必ず実行される処理を記述します。

php
try { // 例外の可能性がある処理 } catch (Exception $e) { echo "エラー: " . $e->getMessage(); } finally { echo "このブロックは常に実行されます。"; }

4. カスタム例外クラスの定義

php
class MyException extends Exception {} try { throw new MyException("独自の例外が発生しました"); } catch (MyException $e) { echo $e->getMessage(); }

5. ログ出力とエラー管理

運用環境ではエラーをユーザーに表示せず、ログに記録するのが一般的です。

php
ini_set('log_errors', 1); ini_set('error_log', '/path/to/php-error.log');

まとめ

PHPにおけるエラーハンドリングは、error_reporting()set_error_handler()などの関数による従来のエラー処理と、try-catchによる例外処理の2つが主軸です。堅牢なアプリケーションを開発するには、これらを適切に使い分け、予期しない動作やシステムクラッシュを防ぐ設計が求められます。

生成日:2025/05/03