Документация по Boost.Asio >предлагает следующий шаблон обработки исключений:
boost::asio::io_service io_service;
...
for (;;)
{
try
{
io_service.run();
break; // run() exited normally
}
catch (my_exception& e)
{
// Deal with exception as appropriate.
}
}
Проблема в том, что контекст исключения теряется в момент его обработки. Например, если у меня есть несколько сеансов сокетов в данном io_service, я не знаю, какой из них вызвал исключение.
Как лучше обрабатывать исключения из асинхронных обработчиков без их упаковки в блоки try/catch
?