Когда использовать trigger_error () против throw new Error ()?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
333
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

  ArithmeticError
    DivisionByZeroError
  AssertionError
  ParseError
  TypeError
    ArgumentCountError

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

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


С моей стороны это в основном приблизительная оценка.

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


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

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

Другие вопросы по теме