PHPの例外について 覚え書き
PHPの例外 - Qiitaという記事を読んだので、自分なりに
PHPの例外とは
PHP本体が持つ定義済み例外
PHPに標準でバンドルされるStandard PHP Library(SPL)の例外のSPL例外
SPLは標準で組み込まれている
→PHPの機能として標準的に使う事ができる
SPL例外
守るべき3つのルール
1.例外は例外の時に使用する
2.制御構造のために例外を用いない
3.値を渡すために例外を用いない
ようするに「例外は真に例外的な時にのみ用いるのであって、通常の制御のために用いてならない」
例外の例
・データベースが接続できない
・Web APIをアクセスできなかった
・ファイルシステムのエラー
・テンプレートファイルや設定ファイルのパースエラー
独自の例外を作ろう
throw new RuntimeException("$fileがありません"); // OK throw new FileNotExistsException($file); // Better
RuntimeExceptionをそのまま使うよりは独自の例外を作った方が良い
LogicExceptionとRuntimeExceptionの区別
・LogicException :コンパイル時またはアプリケーション設計で検出できる例外
例) 存在しないメソッドを呼び出そうとしている時とか
・RuntimeException :実行時のみ検出できる例外。すべてのデータベース例外のベースクラス
例) 外部ファイルにアクセスする時とか
OutOfRangeExceptionとOutOfBoundsExceptionの区別
・OutOfRangeException :無効なインデックスを要求した場合にスローされる例外。
コンパイル時に検出しなければならない
コードのみで範囲が決定してそれに違反するもの。
要するにバグ
・OutOfBoundsException :値が有効なキーで無かった場合にスローされる例外。
コンパイル時には検出できないエラー
実行時にデータが外部から読まれてその結果無効なキーが使われるもの等、
実行時に範囲外が判明するのがOutObBoundsException。
実行条件によってスローされる例外