Throwable
Общий интерфейс всего, что можно бросить и поймать.
Синтаксис
catch (Throwable $e) { … }Возвращаемое значение
ThrowableИнтерфейс с методами `getMessage()`, `getCode()`, `getFile()`, `getLine()`, `getTrace()`, `getPrevious()`.
Примеры
Поймать и исключение, и ошибку:
<?php
function risky(int $case): void
{
if ($case === 1) {
throw new RuntimeException('exception');
}
intdiv(1, 0);
}
foreach ([1, 2] as $case) {
try {
risky($case);
} catch (Throwable $e) {
echo get_class($e), ': ', $e->getMessage(), "\n";
}
}Результат:
RuntimeException: exception
DivisionByZeroError: Division by zeroПримечания
catch (Exception $e) не поймает TypeError или DivisionByZeroError — они наследуют Error. Throwable ловит всё; используйте его на верхнем уровне программы.
См. также
- Exception — Базовый класс исключений.
- Error — Базовый класс внутренних ошибок PHP.
- set_exception_handler — Назначает функцию для исключений, которые никто не поймал.
Вопросы и ответы по теме
В учебнике
- Исключения — Исключения в PHP — throw, try, catch и finally, собственные классы исключений и встроенные ошибки.