Страницы

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

понедельник, 25 февраля 2019 г.

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

Есть такой код:
"; } catch(Exception $e){ echo $e->getMessage()."
"; } var_dump($thrower instanceof Exception); ?>
И он будет работать! Только я не понимаю почему?! Ведь мы "выбросили" исключение на класс customException, почему тогда он совместим с классом Exception?


Ответ

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

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

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