Как я могу произвести умирание () сообщение без информации о местоположении?

У меня есть сценарий, который выдает исключение через die. Когда я ловлю исключение, я хочу произвести сообщение без присоединенной информации о местоположении.

Этот сценарий:

#! /usr/bin/perl -w

use strict;

eval {
    die "My error message";
};
if($@) {
    print $@;
}

выводы My error message at d:\src\test.pl line 7.

Я предпочел бы только получать вывод: My error message

Надо надеяться, люди не фокусируются на том, почему я хочу сделать это, но если кому-то интересно тогда:

Путем мой сценарий работает, он ищет вход и диспетчеризирует каждую часть входа к обработчику, если он сталкивается с частью входа, который он не может обработать тогда, он бросает, таким образом, все исключения прибывают из той же части кода. Следовательно местоположение не ужасно полезно в этой ситуации.

30
задан brian d foy 7 January 2010 в 17:46
поделиться

3 ответа

Add \n:

die "My error message\n"

Это задокументировано в die:

Если последний элемент СПИСЧА не заканчивая новой строкой, текущий скрипт номер строки и номер строки ввода (если любой) также печатается, и новая строка поставляется.

49
ответ дан 27 November 2019 в 23:32
поделиться

У меня есть глава "Обработка ошибок" в Мастер-класс Perl , в которой это обсуждается. Хотя вы можете удалить файл и номер строки просто заканчивая ваше сообщение новой строкой, вы также можете die со ссылкой:

eval {
    time % 2 ?
        die { 
            message => q(I died!),
            level   => 'really really serious',
            }
        :
        die "I died as a string!\n";
    };

if( ref $@ ) {
    print "Reference message was $@->{message}\n";
    }
else {
    print "$@\n";
    }

Мне не нравятся новые строки в конце сообщений об ошибках, и хотя я не видел ваш код, это звучит как ситуация, когда я хотел бы добавить дополнительную информацию в исключение, чтобы я мог отследить, что происходит.

Вы также можете подумать об использовании одного из многих модулей исключений на CPAN.

.
17
ответ дан 27 November 2019 в 23:32
поделиться

Смотрите запись perlfunc для die для всей дополнительной информации. И завершите ваше сообщение с помощью \n.

.
2
ответ дан 27 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: