dokumentacji Boost.Asio suggests the following exception handling pattern:Wyjątek obsługi w 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.
}
}
Problemem jest to, że kontekst wyjątkiem jest tracona w momencie, gdy jest obsługiwane. Na przykład, jeśli mam wiele sesji gniazd w danym io_service, nie wiem, który spowodował wyjątek.
Jaki byłby lepszy sposób obsługi wyjątków z asynchronicznych procedur obsługi bez zawijania ich w blokach try/catch
?