Как правильно умереть с ошибкой, но без трассировки стека в Perl? - PullRequest
6 голосов
/ 29 августа 2010

Я пишу Perl-скрипт, и в той части, где я проверяю параметры, предоставленные пользователем в командной строке, я хочу выйти с ошибкой, объясняющей, что не так с этими параметрами.В этом случае нет необходимости для трассировки стека, чтобы сопровождать это сообщение об ошибке.Так как же лучше всего умереть с сообщением об ошибке, но без трассировки стека или отладочной информации?

Я пробовал следующее:

die "Invalid options";

, который выдает

Invalid options at myscript.pl line 49.

Затем я попытался

use Carp;
...
croak "Invalid options";

, который производит

Invalid options at myscript.pl line 47
    main::prepare_output_directory() called at myscript.pl line 546

Так как же я могу просто умереть с Invalid options и ничего больше?

Бонусный вопрос:почему croak говорит мне, что ошибка в строке 47, а фактический вызов croak в строке 49?

1 Ответ

18 голосов
/ 29 августа 2010

Просто поместите новую строку в конец строки die:

die "Invalid options\n";

Это предотвратит добавление места ошибки к вашему сообщению.

...