boost::future handles std::exception differently from std::future on Windows

Abierto
#325 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp

Línea de trabajo

Empieza ejecutando la reproducción proporcionada de VC++2019 en Windows y compara boost::async con std::async. Rastrea la ruta del future de boost::async a través de f1.get() y el manejo de excepciones implicado. Se considera completado cuando la ruta de boost conserva el mensaje original de std::exception::what(), coincidiendo con el comportamiento mostrado de std::async.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I'm using VC++2019, I use boost::when_all since std::when_all is not available yet. But I find that boost::async will discard std::exception::what() and use 'Unknown exception' or 'std::exception' instead, on the other hand, std::async could handle the message as expected.

#include <iostream>

#define BOOST_THREAD_PROVIDES_FUTURE
#include <boost/thread/future.hpp>

#include <future>

int main() {
    auto f1 = boost::async([]{ // the program will print 'my exception' if this line uses 'std::async'.
        try{
            throw std::invalid_argument("my exception");
        }
        catch (const std::exception& e) {
            throw e;
        }
    });

    try {
        f1.get();
    }
    catch (const std::exception& e) {
        std::cout << e.what() << std::endl;
    }
}

Lenguaje dominante
C++
Estrellas
213
Forks
171
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de boostorg/thread

Todos los issues de boostorg/thread

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.