Ответ 1
Это зависит от того, что вы хотите сделать с STDERR и STDOUT. Я предпочитаю отправлять сообщения об ошибках и предупреждения в STDERR, так что когда кто-то пытается перенаправить вывод в файл, они все еще видят сообщения об ошибках; Тем не менее, бывают случаи, когда STDOUT используется для передачи статуса пользователю, чтобы он мог tail -f
или разбивать на страницы, и в это время запись в STDERR вызывает у них боль (они должны перенаправить STDERR обратно в STDOUT с помощью 2>&1
, и не все знают, как это сделать). Поэтому для использования die
или print
и exit
в значительной степени зависит от того, какую программу вы пишете.
Существуют и другие преимущества/недостатки использования die
:
- Вы можете уловить
die
с помощьюeval
, но не выйти - Вы можете запустить код, когда программа вызывает
die
, установив обработчик сигнала__DIE__
- Вы можете легко переопределить функцию
die
У каждого из них есть моменты, когда это удобно, чтобы иметь возможность делать это, и времена, когда это боль, которую они могут сделать.