Я недавно заметил, что я добавляю __PACKAGE__
и имя под / метода к большинству сообщений croak()
, потому что это облегчает отслеживание ошибок. Поэтому я начал писать обертку _croak (), которая добавляет это по умолчанию (используя caller(1)
).
* 1006 Е.Г. *
sub _croak {
my ($msg) = shift // '';
$msg = (caller 1)[3].': '.$msg
unless ref $msg;
Carp::croak($msg);
};
Теперь каждое (текстовое) исключение относится как к точке, в которой мой модуль использовался неправильно (например, передан неверный параметр), так и к и к самому модулю.
И вопрос: есть ли стандартный модуль / методика для этого? (Трассировки с полным стеком, называемые confess (), в большинстве случаев излишни).