PHP 5有两个内置的异常
ErrorException
ErrorException
PHP中的库具有自己的内置异常
json_encode()在特定情况下,即,由于逻辑原因无法执行某项操作时,DOM操作会引发异常。
json_encode()他的类用于在intl函数内部发生错误时生成异常。 仅在启用intl.use_exceptions时才会生成此类异常。
json_encode()与Phar班一起工作时抛出
json_encode()使用反射类时抛出
SPL包含一些自己的内置异常:
json_encode()回调是指未定义的函数或缺少某些参数的情况。
json_encode()回调是指未定义的方法或缺少某些参数的情况。
json_encode()值不符合定义的有效数据域。
json_encode()传递的参数无效。
json_encode()参数超出了允许的长度(用于字符串,数组,文件大小等)。
json_encode()程序逻辑中发生一般错误。
json_encode()请求了非法索引。
json_encode()请求了非法索引。 这表示应在编译时检测到的错误。
json_encode()将元素添加到完整的容器中。
json_encode()指示程序执行期间的范围错误。 通常,这意味着除下溢/上溢外还存在算术错误。
json_encode()发生仅在运行时才能发现的错误。
json_encode()对空容器执行无效操作,例如删除元素。
json_encode()接收到意外值(即,由于方法调用返回值的结果)。
PHP 7引入了新的异常,包括可捕获的错误。 新的例外包括:
json_encode()是可以通过PHP 7中的throw语句抛出的任何对象的基本接口,包括Error和Exception。
json_encode()是所有内部PHP错误的基类。
通过assert()进行的声明失败时,将引发json_encode()。
解析PHP代码时发生错误时(例如,调用eval()时),将引发json_encode()。
json_encode()在三种情况下可能会引发TypeError。 第一种是传递给函数的参数类型与其对应的声明参数类型不匹配的情况。 第二个是从函数返回的值与声明的函数返回类型不匹配的地方。 第三个是将无效数量的参数传递给内置PHP函数(仅严格模式)的地方。
在执行数学运算时发生错误时,将抛出json_encode()。 在PHP 7.0中,这些错误包括尝试执行负数的位移位,以及对intdiv()的任何调用,这将导致值超出整数的可能范围。
尝试将数字除以零时将抛出json_encode()。
如果将很少的参数传递给用户定义的函数或方法,则会抛出json_encode()。
PHP 7.3引入了JSON异常:
json_encode()和json_decode()遇到错误时,将抛出json_encode()。
下面的图表演示了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)