Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Исключения в php

#php


Есть такой код:

getMessage()."\n";
}
var_dump($thrower instanceof Exception);
?>


И он будет работать! Только я не понимаю почему?! Ведь мы "выбросили" исключение
на класс customException, почему тогда он совместим с классом Exception?
    


Ответы

Ответ 1



Это связано с тем, что все исключения наследуются от базового класса Exception. Поэтому указав Exception в блоке catch вы получаете возможность перехвата всех его наследников. В PHP 7 обычные ошибки тоже рассматриваются как исключения и их можно перехватывать при помощи try ... catch (не все правда, деление на ноль например, сделано не перехватываемым). Ошибки наследуются от нового базового класса Error, поэтому при Exception и его наследники их не отловливают.

Комментариев нет:

Отправить комментарий