Jeśli używam kontraktów typu Boost, a przyszłe raporty są zgodne z has_exception(), czy istnieje sposób na odzyskanie tego wyjątku? Na przykład poniższy kod:Jak uzyskać zgłoszenie wyjątku do zwiększenia :: przyszłość?
int do_something() {
...
throw some_exception();
...
}
...
boost::packaged_task task(do_something);
boost::unique_future<int> fi=task.get_future();
boost::thread thread(boost::move(task));
fi.wait();
if (fi.has_exception()) {
boost::rethrow_exception(?????);
}
...
Pytanie brzmi, co należy umieścić w miejscu "?????"?
Docs powiedzieć 'has_exception':' * true, jeśli wiąże się to z asynchronicznego rezultacie, że wynik jest gotowy do pobierania, a wynik jest przechowywanym wyjątkiem ". Ale ta świetna dokumentacja nie mówi, jak ją zdobyć ... – CharlesB
Czy próbowałeś po prostu 'fi.get()'? – Nim