#11 PHPで学ぶエラーハンドリングの基本

PHPのエラーハンドリングは、比較的新しいバージョンで整備された、`try`・`catch`という仕組みが基本です。この記事では、PHPにおけるエラーハンドリングの基本を解説します。

try・catchの基本

try { if ($b === 0) { throw new Exception("0では割れません"); } } catch (Exception $e) { echo $e->getMessage(); }

`throw`で例外を発生させ、`catch`でそれを受け取ります。`$e->getMessage()`で例外に添えたメッセージを取得できます。

複数の例外の種類を使い分ける

PHPには`Exception`のほかに、用途に応じた組み込みの例外クラスが用意されています。目的に合った種類を投げることで、呼び出し側がより適切に対処できます。

try { if (!is_int($age)) { throw new InvalidArgumentException("ageは整数である必要があります"); } } catch (InvalidArgumentException $e) { echo "入力エラー: " . $e->getMessage(); } catch (Exception $e) { echo "その他のエラー: " . $e->getMessage(); }

複数の`catch`ブロックを並べることで、例外の種類ごとに異なる処理を書けます。より具体的な例外クラスを先に、`Exception`のような広い範囲を捕まえるものを後に書くのが基本です。

finallyという必ず実行される部分

try { // 何らかの処理 } finally { echo "処理が終わりました"; }

`finally`ブロックは、例外が発生してもしなくても必ず実行されます。ファイルを閉じる、接続を切断するといった後片付け処理を書くのに適しています。

独自の例外クラスを作る

アプリケーション固有のエラーを表現したい場合は、`Exception`を継承した独自クラスを作ることもできます。

class InsufficientBalanceException extends Exception {} throw new InsufficientBalanceException("残高が不足しています");

PHPならではの注意点

PHPには、`try`・`catch`で捕まえられる「例外(Exception)」とは別に、古くからある「エラー」という仕組みも存在し、両者は歴史的な経緯から扱いが異なります。比較的新しいPHPでは、多くのエラーが例外として扱われるよう改善されていますが、使っているライブラリによっては古い方式のエラー処理が必要な場合もあります。`catch (Throwable $e)`のように書くと、`Exception`と(致命的な内部エラーを表す)`Error`の両方をまとめて捕まえられる点も覚えておくと安心です。

まとめ

PHPのエラーハンドリングは`try`・`catch`・`finally`が基本です。例外の種類ごとの使い分け、独自の例外クラス、「例外」と「エラー」という2つの仕組みの違いも、頭の片隅に置いておきましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

PHPをもっと学びたい方には「10日でおぼえるPHP入門教室 第4版」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本