LINUX.ORG.RU

Как ловить исключения внутри AnyEvent-обработчика?

 , ,


0

1

Есть AnyEvent-обработчик, внутри которого происходит ошибка - и он тихо валится без всякого зазрения совести. Подумываю над Try::Tiny или даже eval'ом, но интересуют best practices по ловле таких проблем внутри AnyEvent-handler'ов. Искал в гугле - не нашёл. Складывается впечатление, что у разработчиков под AnyEvent всегда всё работает идеально и никогда ничего не падает (во что, конечно, слабо верится).

Что посоветуете?

Спасибо!

★★★★★

А чем тебе eval не нравится ? Я использовал именно его, брат жив, код работает :)
Возможно, это не best practices, но зато самое простое и быстрое решение.

joy4eg ★★★★★ ()

http://search.cpan.org/~mlehmann/AnyEvent-7.12/lib/AnyEvent/FAQ.pod#My_callba......

Точно так же, как в любом другом коде. Не давайте исключению покинуть код обработчика: таков контракт между приложением и AnyEvent.

eval, естественно, подойдёт, если мы говорим об eval BLOCK, а не eval STRING. Try::Tiny тоже вполне подходит.

anonymous ()
Ответ на: комментарий от animechaos

Спасибо, статья в PragmaticPerl - это прямо то, что нужно.

P.S. Оказалось, что я вызывал привычную функцию Dumper, не сделав предварительно use Data::Dumper Из-за этого код AnyEvent-обработчика, созданного внутри AnyEvent::SMTP::Server - тихо-мирно валился в корку. Кстати, из статьи в PragmaticPerl я так и не понял, что делать в такой ситуации. Почему-то try это не перехватывает. Разве что eval {} помог бы...

DRVTiny ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.