Есть такой код:
";
}
catch(Exception $e){
echo $e->getMessage()."
";
}
var_dump($thrower instanceof Exception);
?>
И он будет работать! Только я не понимаю почему?! Ведь мы "выбросили" исключение на класс customException, почему тогда он совместим с классом Exception?
Ответ
Это связано с тем, что все исключения наследуются от базового класса Exception. Поэтому указав Exception в блоке catch вы получаете возможность перехвата всех его наследников.
В PHP 7 обычные ошибки тоже рассматриваются как исключения и их можно перехватывать при помощи try ... catch (не все правда, деление на ноль например, сделано не перехватываемым). Ошибки наследуются от нового базового класса Error, поэтому при Exception и его наследники их не отловливают.
Комментариев нет:
Отправить комментарий