Я 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()?






Класс \Error, как вы уже упоминали, был введен в PHP 7.
Он действует точно так же, как исключение, поскольку реализует Throwable.
Это также подклассы от следующих:
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
ArgumentCountError
Однако он не ведет себя как trigger_error(), на самом деле он ведет себя точно так же, как исключение (в основном потому, что это одно).
Если у вас trigger_error(), вы не сможете его поймать, потому что это не исключение. Хотя есть обходные пути.
С моей стороны это в основном приблизительная оценка.
Я предполагаю, что это существует для более четкого разделения ошибок и исключений, возможно, в будущих планах будет исключение trigger_error и оставление только Error.
Чтобы ответить на ваш вопрос.
Я бы предпочел throwing, а не trigger_error. Это ловится, это ООП.