c++ studio cómo obtener el mensaje de la excepción general




programacion android pdf 2018 (4)

Creo que quiere hacer que se registre que ocurrió un error, pero no necesita específicamente el error exacto (en ese caso escribiría su propio texto de error).

El enlace que DumbCoder publicó arriba tiene un tutorial que lo ayudará a obtener lo que está tratando de lograr.

Esta pregunta ya tiene una respuesta aquí:

Si quiero escribir información útil en un archivo cada vez que detecto una excepción, ¿cómo hacerlo?

try
{
   //call dll from other company
}
catch(...)
{
   //how to write info to file here???????
}

No hay forma de saber nada acerca de la excepción específica en un manejador de todo. Es mejor si puede capturar una excepción de clase base, como std :: exception, si es posible.


Se puede acceder a una excepción capturada mediante la función std :: current_exception (), que se define en <exception>. Esto fue introducido en C ++ 11.

std::exception_ptr current_exception();

Sin embargo, std :: exception_ptr es un tipo definido por la implementación, por lo que no puede acceder a los detalles de todos modos. typeid(current_exception()).name() le dice exception_ptr, no la excepción contenida. Entonces, lo único que puedes hacer con esto es std :: rethrow_exception (). (Parece que estas funciones están ahí para estandarizar la captura-paso-y-retorno en los hilos).


No se puede obtener información del ... bloque de captura. Es por eso que el código generalmente maneja excepciones como esta:

try
{
    // do stuff that may throw or fail
}
catch(const std::runtime_error& re)
{
    // speciffic handling for runtime_error
    std::cerr << "Runtime error: " << re.what() << std::endl;
}
catch(const std::exception& ex)
{
    // speciffic handling for all exceptions extending std::exception, except
    // std::runtime_error which is handled explicitly
    std::cerr << "Error occurred: " << ex.what() << std::endl;
}
catch(...)
{
    // catch any other errors (that we have no information about)
    std::cerr << "Unknown failure occurred. Possible memory corruption" << std::endl;
}




exception-handling