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