Ответ 1
PHP 5 имеет два встроенных исключения
SPL включает несколько собственных встроенных исключений:
-
BadFunctionCallException
Обратный вызов ссылается на неопределенную функцию или если отсутствуют некоторые аргументы. -
BadMethodCallException
Обратный вызов ссылается на неопределенный метод или если некоторые аргументы отсутствуют. -
DOMException
-
DomainException
Значение не соответствует определенной допустимой области данных. -
IntlException
его класс используется для генерации исключений, когда ошибки происходят внутри intl-функций. Такие исключения генерируются только тогда, когда включено intl.use_exceptions. -
InvalidArgumentException
аргументы были недействительными. -
LengthException
Параметр превышает допустимую длину (используется для строк, массивов, размера файла и т.д.). -
LogicException
общая ошибка в логике программы. -
OutOfBoundsException
недопустимый индекс. -
OutOfRangeException
недопустимый индекс. Это представляет ошибки, которые должны быть обнаружены во время компиляции. -
OverflowException
Добавление элемента в полный контейнер. -
PharException
Брошенный, работая с классом Phar -
RangeException
Указывает ошибки диапазона во время выполнения программы. Обычно это означает, что произошла арифметическая ошибка, отличная от under/overflow. -
ReflectionException
Выдается при работе с классами Reflection -
RuntimeException
Ошибка, которая может быть найдена только во время выполнения. -
UnderflowException
Выполнение недопустимой операции с пустым контейнером, например удаление элемента. -
UnexpectedValueException
Получено непредвиденное значение (т.е. Как результат возвращенного значения из вызова метода).
В PHP 7 вводятся новые исключения, в том числе обнаруживаемые ошибки. Новые исключения включают в себя:
-
Throwable
- это базовый интерфейс для любого объекта, который может быть сгенерирован с помощью оператора throw в PHP 7, включая Error и Exception. -
Error
является базовым классом для всех внутренних ошибок PHP. -
AssertionError
генерируется при сбое подтверждения, сделанного с помощью assert(). -
ParseError
когда при синтаксическом анализе PHP-кода возникает ошибка, например, когда вызывается eval(). -
TypeError
Существует три сценария, в которых может быть выдана ошибка TypeError. Первый - это когда тип аргумента, передаваемый в функцию, не соответствует соответствующему объявленному типу параметра. Во-вторых, значение, возвращаемое из функции, не соответствует объявленному типу возврата функции. Третий случай, когда недопустимое количество аргументов передается встроенной функции 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)