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