Когда использовать trigger_error () против throw new Error ()? - PullRequest
0 голосов
/ 12 ноября 2018

Я throw new Exception когда могу catch выйти из строя и что-то с этим сделать. Если я не могу с этим что-то сделать, тогда я просто trigger_error().

Теперь в PHP 7 есть что-то новое для меня: throw new Error.

например.,

if (!mail(...))
    throw new Error('...');

или

if (!mail(...))
    trigger_error('...');

Если я не хочу catch сообщать об ошибке или что-то делать в случае сбоя mail(), следует ли мне использовать throw new Error() или просто старый trigger_error()?

Какие случаи мы должны использовать throw new Error() против простого trigger_error()?

1 Ответ

0 голосов
/ 12 ноября 2018

Класс \Error, как вы уже упоминали, был представлен в PHP 7.

Он действует как исключение, поскольку он реализует Throwable.

Это также подклассы по следующему:

  ArithmeticError
    DivisionByZeroError
  AssertionError
  ParseError
  TypeError
    ArgumentCountError

Тем не менее, он не ведет себя как trigger_error(), фактически он ведет себя как исключение (в основном потому, что оно одно).

Если вы trigger_error(), вы не можете его поймать, потому что это не исключение. Хотя есть обходные пути .


Это в основном предположение с моей стороны.

Я предполагаю, что это существует для более четкого разделения Ошибок и Исключений, возможно, будущие планы включают в себя устаревшую trigger_error и оставляют только Error.


Чтобы ответить на ваш вопрос.

Я бы придерживался throwing, а не trigger_error. Это ловится, это ООП.

...