#10. 7 php Класс Error для внутренних ошибок. Иерархия внутренних ошибок

Класс Error является базовым для всех внутренних исключений, генерируемых встроенными PHP функциями. Например,

<?php
try {
    $str  = "Какая-то строка";
    echo $str[0]; //ошибка - нельзя применять оператор [] к строке
} catch (Error $e)
{
    echo "ошибка";
}

Класс Error не наследуется от класса Exception (поэтому поймать такие ошибки с помощью catch (Exception $e) не получится), но реализует общий с ним интерфейс Throwable.

Иерархия внутренних ошибок

Следующие встроенные классы исключений наследуются от Error:

  • ArithmeticError — генерируется в случае ошибок при выполнении математических операций, например, выход за границу числа
  • AssertionError — исключение для функции assert()
  • DivisionByZeroError — деление на ноль
  • ParseError — исключение, возникающее при ошибке разбора PHP-кода
  • TypeError — ошибка неправильного использования типа
vedro-compota's picture

Класс Error не наследуется от класса Exception (поэтому поймать такие ошибки с помощью catch (Exception $e) не получится)

т.е. приведенный ранее код:

try {
    $str  = "Какая-то строка";
    echo $str[0]; //ошибка - нельзя применять оператор [] к строке
} catch (Error $e)
{
    echo "ошибка";
}

будет работать именно потому что ловится Error, а не Exception, как понимаю

_____________
матфак вгу и остальная классика =)