В книге [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' }; 21 августа 2012 г., 12:37 пользователь Alexandr Alexeev <[email protected]> написал: > Сейчас я делаю примерно так: > > use Try::Tiny; > > try { > # ... > } catch { > if($_ =~ /LOGIN_FAILED/) { > # ... > } elsif($_ =~ /SOME_OTHER_ERROR/) { > # ... > } else { > die $_; > } > }; > > Не покидают мысли, что делаю что-то не так. Ну хотя бы потому что eq > наверное будет побыстрее =~, а еще легко допустить опечатку (тесты - > это хорошо, но прыгать без запасного парашюта знаете ли...). В общем, > поведайте мне пожалуйста, как лично вы работаете с исключениями и что > нынче принято считать best practice? > > -- > С уважением, Александр > Личный блог: http://eax.me/ > Мой форум: http://it-talk.org/ > Мой Twitter: http://twitter.com/afiskon > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
