У меня есть программа, которая использует таймер для установки двойного буфера в приложении с графическим интерфейсом.В некоторых редких случаях, например, когда программа закрывается, я получаю сообщение об ошибке, что обещание, которое устанавливает этот буфер, уже установлено.Есть ли способ отловить эту ошибку и справиться с ней?
Вот минимальный пример:
#include <iostream>
#include <boost/thread/future.hpp>
int main()
{
boost::promise<int> promise;
try {
promise.set_value(0);
promise.set_value(0);
} catch (...) {
promise.set_exception(boost::current_exception());
}
return 0;
}
Независимо от того, как я пытаюсь ее перехватить, она завершает мою программу с ошибкой:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::promise_already_satisfied> >'
И здесь вы можете увидеть это в действии.