[Moscow.pm] А как вы бросаете исключения?

Alexandr Alexeev afiskon на gmail.com
Вт Авг 21 04:10:26 PDT 2012


>> Правда, это довольно неудобно отлаживать, т.к. когда запускаешь в
консоли (или в тесте) что-то вроде:

Попробуйте Devel::REPL, он охренителен (да, тянет Moose, но все равно
охренителен!)

21 августа 2012 г., 15:06 пользователь Ilya Chesnokov
<chesnokov.ilya на gmail.com> написал:
> 21 августа 2012 г., 14:54 пользователь Иван Бессарабов
> <ivan на bessarabov.ru> написал:
>> В книге [Perl Best Practices ][1] есть глава Error Handling, где Damian Conway
>> очень подробно рассуждает об исключениях. Он приходит к идеи что стоит
>> создавать иерархии исключений с помощью [Exception::Class][2].
>>
>>  [1]: http://shop.oreilly.com/product/9780596001735.do
>>  [2]: https://metacpan.org/module/Exception::Class
>>
>> Иерархия исключений -- это здорово, но иногда сильно избыточно. Perl die крут
>> тем что в качестве параметра он принимает скаляр, что позволяет
>> запихнуть в $@ объект (именно так и работает Exception::Class и другие
>> подобные модули) или же запихнуть в $@ ссылку на что-нибудь.
>>
>> Так что, можно рассмотреть в качестве варианта кидать исключения как-то так:
>>
>>     die { error_number => 123, error_text => 'login failed' };
>
> Ага, мы сейчас в нашем API примерно так и делаем. Только принципиально
> не используем читабельные тексты, т.к. API предназначено для
> автоматизированной обработки. Т.е. подобная ошибка выглядела бы так:
> { error => { login_failed => 1 } };
>
> Правда, это довольно неудобно отлаживать, т.к. когда запускаешь в
> консоли (или в тесте) что-то вроде:
>
> perl -MMy::Module -E '...',
>
> а получаешь в ответ:
>
> HASH(0x2639de8),
>
> то приходится добавлять дополнительные проверки, вывод ошибки через
> Data::Dumper и т.д.
>
> --
> Best regards,
> Ilya Chesnokov
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon


Подробная информация о списке рассылки Moscow-pm