shinke1987.net
雑多な備忘録等のはず。
他のカテゴリ・タブ
目次
PR

PHPでの例外について

2023-05-27 2023-05-27
カテゴリ: PHP

例外クラス

← 親クラス   子クラス →
概要
Exceptionすべての例外の基底クラス。
ErrorExceptionエラー例外。
LogicExceptionロジックの誤り。
BadFunctionCallException関数呼び出しの問題(未実装、引数不足等)
BadMethodCallExceptionメソッド呼び出しの問題(未実装、引数不足等)
DomainException型は正しいが値が不正。
InvalidArgumentException引数の型が不正。
LengthException長さが不正。
OutOfRangeException無効なインデックス。
RuntimeException実行時の問題。
OutOfBoundsException配列・連想配列のキーが不正。
OverflowExceptionこれ以上要素を追加できない。
PDOExceptionPDOに関わる問題。
RangeException型は正しいが、値が不正。
UnderflowExceptionこれ以上要素を削除できない。
UnexpectedValueException戻り値が不正。

独自の例外クラス

独自の例外クラスを作成するなら、次の要件に従っておくと良い。

  1. Exceptionクラスを継承すること。
  2. クラス名の接尾辞はExceptionとすること。
  3. アプリが複数の例外を持つ場合には、アプリ独自例外を意味するインターフェイスを用意しておき、他の例外はこれを実装すること。(クラスへのタグ付けを目的としたインターフェイスのことをマーカーインターフェイスと呼んだりする)

privateメソッドではassert文をtry-catch文の代わりに使う

privateメソッドのように、呼び出し元が特定されていて信用できる場合は、
検査 + 例外スローの手続きは不要。
代わりにassert文で引数が満たすべき条件を宣言すると良い。
assert命令は条件が満たされていない場合に、エラー・警告を投げる。

下記が使用例

<?php
function getTest(int $i1, int $i2) : int {
    assert($i1 > 0 && $i2 > 0);
    return $i1 + $i2;
}

assert文はphp.iniで動作を変更できる。(下記はphp.iniでの項目と概要)

同一カテゴリの記事