У меня есть сценарий, который выдает исключение через 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
Надо надеяться, люди не фокусируются на том, почему я хочу сделать это, но если кому-то интересно тогда:
Путем мой сценарий работает, он ищет вход и диспетчеризирует каждую часть входа к обработчику, если он сталкивается с частью входа, который он не может обработать тогда, он бросает, таким образом, все исключения прибывают из той же части кода. Следовательно местоположение не ужасно полезно в этой ситуации.
Add \n
:
die "My error message\n"
Это задокументировано в die:
Если последний элемент СПИСЧА не заканчивая новой строкой, текущий скрипт номер строки и номер строки ввода (если любой) также печатается, и новая строка поставляется.
У меня есть глава "Обработка ошибок" в Мастер-класс 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.
. Смотрите запись perlfunc для die для всей дополнительной информации. И завершите ваше сообщение с помощью \n
.