Ищу более ясного карпа :: croak () - PullRequest
2 голосов
/ 28 февраля 2012

Я недавно заметил, что я добавляю __PACKAGE__ и имя под / метода к большинству сообщений croak(), потому что это облегчает отслеживание ошибок. Поэтому я начал писать обертку _croak (), которая добавляет это по умолчанию (используя caller(1)).

* 1006 Е.Г. *

sub _croak {
    my ($msg) = shift // '';
    $msg = (caller 1)[3].': '.$msg
        unless ref $msg;
    Carp::croak($msg);
};

Теперь каждое (текстовое) исключение относится как к точке, в которой мой модуль использовался неправильно (например, передан неверный параметр), так и к и к самому модулю.

И вопрос: есть ли стандартный модуль / методика для этого? (Трассировки с полным стеком, называемые confess (), в большинстве случаев излишни).

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

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

2 голосов
/ 28 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...