[Moscow.pm] Обработка исключений
Dmitry Karpich
meettya на gmail.com
Чт Фев 10 01:17:14 PST 2011
Я вот собираюсь смотреть в сторону AOP для таких вещей, как раз чтобы не закидывать код кучей эвалов.
Мухи отдельно, котлеты отдельно.
Явцы до того же дошли, кстати.
Докладец был на Питерской конференции, запись есть в онлайне и куча инфы на IBM-овском сайте про AOP как парадигму и принципы использования.
On Feb 10, 2011, at 12:01 PM, Alexey Shrub wrote:
> Всем привет,
> решил тут покрасивше сделать обработку исключений, бегло глянул - полно
> модулей которые делают джаваподобный синтаксис, но честно говоря нет
> желания глубоко в них вникать, предполагаю что у всех у них могут быть
> проблемы как например у Error.pm - появляются замыкания там где их никто
> не ждёт
> http://axkit.org/docs/presentations/tpc2001/exceptions.axp/a.pdf
> понятное дело что он работает в куче проектов, справляются как-то, но
> нет желания выискивать проблемы возникшие из-за подобных вещей (хотя
> Try::Tiny возможно неплохой вариант - юзал кто?).
> Поэтому решил использовать чисто перловый синтаксис и нарисовал такую
> конструкцию:
>
> use strict;
> use feature ':5.10';
> use Carp;
> use ExceptionTest;
>
>
> my $obj = new ExceptionTest();
>
> eval {
> $obj->function1();
> 1;
> } or do { given( $@ ) {
> when ( $_->isa('Exception::XML') ) {
> say 'XML error';
> }
> when ( $_->isa('Exception::HTTP') ) {
> say 'HTTP error';
> }
> default { croak 'Unknown error: '.$_ }
> }}
>
> в методе function1 исключения генерятся так (объекты исключений
> самописные для примера)
> die new Exception::HTTP( code => 404, message => 'Not Found' );
> В многопоточной среде видимо нужно ещё в один блок заворачивать и
> локализовать в нём $@, но тогда совсем уродливо будет
>
> С точки зрения синтаксиса не идеально, к сожалению не работает без do
> т.е. хотелось бы иметь вместо
> } or do { given( $@ )
> } or given( $@ )
>
> тогда синтаксил был бы чище, но не получается, получаю синтаксическую
> ошибку - не понимаю почему, может кто знает?
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
Подробная информация о списке рассылки Moscow-pm