3 Şubat 2016 Çarşamba

std::current_exception

Giriş
Tam olarak nerede ve nasıl kullanıldığını anlamadım. Thread içinde atılan exception'ı ana thread'e taşımak için şöyle yapılır.
void thread_function(std::exception_ptr* exception)
try {
    throw std::runtime_error("test exception");
}
catch(std::exception& e) {
    *exception = std::current_exception();
}

int main() {
    // Thread creation.
    std::exception_ptr other_thread_exception;
    std::thread t{thread_function, &other_thread_exception};

    // Thread termination.
    t.join();
    if(other_thread_exception)
        std::rethrow_exception(other_thread_exception);
}


Hiç yorum yok:

Yorum Gönder