PHPに組み込まれているすべてのExceptionサブクラスのリストを見つけることはまだできていません。独自の例外サブクラスを作成する前に、意味のある組み込みのものを使用したいのです。
たとえば、InvalidArgumentExceptionが存在することはわかっていますが、JavaのNullPointerExceptionに匹敵するものはないようです。
PHPで利用可能なExceptionサブクラスのリストを持っている、またはリンクできる人はいますか?
PHP 5には2つの組み込み例外があります
PHP内のライブラリには、独自の組み込み例外があります
DOMException
DOM操作では、特定の状況下、つまり論理的な理由で操作を実行できない場合に例外が発生します。IntlException
彼のクラスは、intl関数内でエラーが発生したときに例外を生成するために使用されます。このような例外は、intl.use_exceptionsが有効になっている場合にのみ生成されます。PharException
Pharクラスを操作するときにスローされますReflectionException
リフレクションクラスを操作するときにスローされますBadFunctionCallException
コールバックは、未定義の関数を参照するか、一部の引数が欠落している場合に参照します。BadMethodCallException
コールバックは、未定義のメソッドを参照しているか、一部の引数が不足しています。DomainException
値は、定義された有効なデータドメインに準拠していません。InvalidArgumentException
渡された引数は無効です。LengthException
パラメータが許可された長さを超えています(文字列、配列、ファイルサイズなどに使用されます)。LogicException
プログラムのロジックで一般的なエラーが発生しました。OutOfBoundsException
不正なインデックスが要求されました。OutOfRangeException
不正なインデックスが要求されました。これは、コンパイル時に検出されるべきエラーを表しています。OverflowException
完全なコンテナに要素を追加します。RangeException
プログラム実行中の範囲エラーを示します。通常、これはアンダー/オーバーフロー以外の算術エラーがあったことを意味します。RuntimeException
実行時にのみ見つかるエラーが発生します。UnderflowException
要素の削除など、空のコンテナに対して無効な操作を実行しています。UnexpectedValueException
予期しない値が受信されました(つまり、メソッド呼び出しからの戻り値の結果として)。PHP 7では、キャッチ可能なエラーを含む新しい例外が導入されています。新しい例外は次のとおりです。
Throwable
は、PHP 7のthrowステートメントを介してスローできるすべてのオブジェクトの基本インターフェイスであり、エラーと例外を含みます。Error
は、すべての内部PHPエラーの基本クラスです。AssertionError
assert()によるアサーションが失敗するとスローされます。ParseError
PHPコードの解析中にエラーが発生すると、eval()が呼び出されたときなど)がスローされます。TypeError
TypeErrorがスローされるシナリオは3つあります。 1つ目は、関数に渡される引数の型が、対応する宣言されたパラメーターの型と一致しない場合です。 2つ目は、関数から返される値が、宣言された関数の戻り値の型と一致しない場合です。 3番目は、無効な数の引数が組み込みのPHP関数(厳密モードのみ))に渡される場所です。ArithmeticError
は、数学演算の実行中にエラーが発生した場合にスローされます。 PHP 7.0では、これらのエラーには、負の量でビットシフトを実行しようとすること、および整数の可能な範囲外の値になるintdiv()への呼び出しが含まれます。DivisionByZeroError
は、数値をゼロで除算しようとするとスローされます。ArgumentCountError
は、ユーザー定義の関数またはメソッドに渡される引数が少なすぎる場合にスローされます。PHP 7.3ではJSON例外が導入されています。
JsonException
は、json_encode()
およびjson_decode()
でエラーが発生するとスローされます。PHP 7で導入された新しい階層を示すグラフは次のとおりです。
\Throwable
├── \Exception (implements \Throwable)
| |── \DOMException (extends \Exception)
| ├── \IntlException (extends \Exception)
| ├── \JsonException (extends \Exception)
| |── \PharException (extends \Exception)
| |── \ReflectionException (extends \Exception)
│ ├── \LogicException (extends \Exception)
│ │ ├── \BadFunctionCallException (extends \LogicException)
│ │ │ └── \BadMethodCallException (extends \BadFunctionCallException)
│ │ ├── \DomainException (extends \LogicException)
│ │ ├── \InvalidArgumentException (extends \LogicException)
│ │ ├── \LengthException (extends \LogicException)
│ │ └── \OutOfRangeException (extends \LogicException)
│ └── \RuntimeException (extends \Exception)
│ ├── \OutOfBoundsException (extends \RuntimeException)
│ ├── \OverflowException (extends \RuntimeException)
│ ├── \RangeException (extends \RuntimeException)
│ ├── \UnderflowException (extends \RuntimeException)
│ └── \UnexpectedValueException (extends \RuntimeException)
└── \Error (implements \Throwable)
├── \AssertionError (extends \Error)
├── \ParseError (extends \Error)
└── \TypeError (extends \Error)
└── \ArgumentCountError (extends \TypeError)
└── \ArithmeticError (extends \Error)
└── \DivisionByZeroError extends \ArithmeticError)
実は、故障して聞いたところ、なんとか見つけました。
技術的にはPHPに組み込まれている例外は2つだけです: http://www.php.net/manual/en/reserved.exceptions.php
そして、SPLはさらにいくつかを定義します: http://www.php.net/manual/en/spl.exceptions.php
彼らの階層の説明付き: http://www.php.net/~helly/php/ext/spl/classException.html
更新
上記のリンクは死んでいます、それは基本的なPHP=例外階層の図でした。私はオリジナルを見つけることができませんでしたが、これは置き換えです:
元は http://fossies.org/dox/php-5.2.17/classException.html にあります