1. PHPの例外クラス
PHPには以下の例外クラスが組み込まれています。
参考
2. 例外クラスの使い分け
それぞれの例外クラスをどのように使い分ければよいのかというのは、なかなか難しいところです。
以下にまとめてみました。
3. 独自アプリ用例外クラスの作成例と利用例
\Exception
を継承したクラスと\RuntimeException
を継承したクラスを作って使い分けると良い。- あとは、独自アプリ用例外インタフェースを用意して、それぞれのクラスで implements しておく。そうすることで、独自アプリから発生した例外を判別することができる。
例外クラスの作成例
interface MyAppException { }
class MyException extends \Exception implements MyAppException { }
class MyRuntimeException extends \RuntimeException implements MyAppException { }
例外クラスを捕捉する例
// トップレベルのエラーハンドラ
try {
} catch (MyAppException) {
// 開発中のアプリから発生する例外はここで捕捉できる
} catch (\RuntimeException $e) {
// その他の実行時例外はここで捕捉できる
// 必要であればリソースの開放などを行う
} catch (\Exception $e) {
// その他の例外はここで捕捉できるが、捕捉する必要はないかもしれない
// 必要であればリソースの開放などを行う
}
※ PHP でどのように Exception/RuntimeException/LogicException を使い分けるか – Qiita を参考にしました。
4. 資料
- PHPにおける例外クラスの設計考察: Architect Note
- 2017-12-02
- PHPの例外 – Qiita
- 2016-12-21
- PHP でどのように Exception/RuntimeException/LogicException を使い分けるか – Qiita
- 2016-12-05
- PHP7で堅牢なコードを書く – 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016 // Speaker Deck
- 2016-11-03
- PHPについてのスライドですが、他のプログラミング言語でも参考になると思います。是非読んで理解しましょう。
- 動画もあります → PHPConference2016 Track1 (3) PHP7で堅牢なコードを書く – YouTube