>> Правда, это довольно неудобно отлаживать, т.к. когда запускаешь в консоли (или в тесте) что-то вроде:
Попробуйте Devel::REPL, он охренителен (да, тянет Moose, но все равно охренителен!) 21 августа 2012 г., 15:06 пользователь Ilya Chesnokov <[email protected]> написал: > 21 августа 2012 г., 14:54 пользователь Иван Бессарабов > <[email protected]> написал: >> В книге [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 > [email protected] | http://moscow.pm.org -- С уважением, Александр Личный блог: http://eax.me/ Мой форум: http://it-talk.org/ Мой Twitter: http://twitter.com/afiskon -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
