我还没有找到PHP中所有内置Exception子类的列表。在创建自己的异常子类之前,我宁愿在有意义的时候使用内置的。
例如,我知道存在InvalidArgumentException,但似乎没有与Java的NullPointerException相当的。
有没有人或可以链接到PHP中可用的Exception子类列表?
答案 0 :(得分:96)
PHP 5有两个内置的异常
SPL includes a few of its own built in exceptions:
BadFunctionCallException
回调是指未定义的函数,或者是否缺少某些参数。BadMethodCallException
回调是指未定义的方法,或者是否缺少某些参数。DomainException
值不符合定义的有效数据域。InvalidArgumentException
传递的参数无效。LengthException
参数超出允许的长度(用于字符串,数组,文件大小等)。LogicException
程序逻辑中出现通用错误。OutOfBoundsException
要求提供非法索引。OutOfRangeException
要求提供非法索引。这表示应该在编译时检测到的错误。OverflowException
将元素添加到完整容器中。RangeException
表示程序执行期间的范围错误。通常这意味着除了/溢出之外还有一个算术错误。RuntimeException
只能在运行时发现的错误。UnderflowException
对空容器执行无效操作,例如删除元素。UnexpectedValueException
收到意外的值(即,作为方法调用返回值的结果)。PHP 7引入了新的异常,包括可捕获的错误。新的例外包括:
Throwable
是可以通过PHP 7中的throw语句抛出的任何对象的基本接口,包括错误和异常。Error
是所有内部PHP错误的基类。AssertionError
。ParseError
,例如调用eval()时。TypeError
有三种情况可能会抛出TypeError。第一个是传递给函数的参数类型与其对应的声明参数类型不匹配的位置。第二个是函数返回的值与声明的函数返回类型不匹配。第三种是将无效数量的参数传递给内置PHP函数(仅限严格模式)。ArithmeticError
。在PHP 7.0中,这些错误包括尝试以负数执行bitshift,以及对intdiv()的任何调用,这将导致超出整数可能边界的值。DivisionByZeroError
。ArgumentCountError
。PHP 7.3引入了JSON异常:
JsonException
在json_encode()
和json_decode()
遇到错误时抛出。
这是一个演示PHP 7中引入的新层次结构的图表:
\Throwable
├── \Exception (implements \Throwable)
| ├── \JsonException (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)
答案 1 :(得分:18)
实际上,我现在找到了他们,因为我崩溃了并且问了。
从技术上讲,PHP看起来只有2个内置异常: http://www.php.net/manual/en/reserved.exceptions.php
SPL定义了几个: http://www.php.net/manual/en/spl.exceptions.php
解释他们的heirarchy: http://www.php.net/~helly/php/ext/spl/classException.html
<强>更新强>
上面的链接已经死了,它是基本PHP异常层次结构的图表。我找不到原版,但这里有一个替代品:
找到