Investigamos en el mundo on line para traerte la solución a tu inquietud, en caso de preguntas déjanos tu pregunta y te respondemos con gusto, porque estamos para ayudarte.
Solución:
Sencillo:
#include
int compare( int a, int b ) b < 0 )
throw std::invalid_argument( "received negative value" );
La biblioteca estándar viene con una buena colección de objetos de excepción incorporados que puede lanzar. Ten en cuenta que siempre debes lanzar por valor y atrapar por referencia:
try
compare( -1, 3 );
catch( const std::invalid_argument& e )
// do stuff with exception...
Puede tener varias declaraciones catch() después de cada intento, por lo que puede manejar diferentes tipos de excepción por separado si lo desea.
También puede volver a lanzar excepciones:
catch( const std::invalid_argument& e )
// do something
// let someone higher up the call stack handle it if they want
throw;
Y para capturar excepciones independientemente del tipo:
catch( ... ) ;
Solo agrega throw
donde sea necesario, y try
bloquear a la persona que llama que maneja el error. Por convención, solo debe arrojar cosas que se derivan de std::exception
así que incluye
primero.
int compare(int a, int b)
void foo()
try
compare(-1, 0);
catch (const std::invalid_argument& e)
// ...
Además, busque en Boost.Exception.
Aunque esta pregunta es bastante antigua y ya ha sido respondida, solo quiero agregar una nota sobre cómo manejar adecuadamente las excepciones en C++ 11:
Utilizar std::nested_exception
y std::throw_with_nested
Se describe en StackOverflow aquí y aquí, cómo puede obtenga un seguimiento de sus excepciones dentro de su código sin necesidad de un depurador o registro engorroso, simplemente escribiendo un controlador de excepciones adecuado que volverá a generar excepciones anidadas.
Dado que puede hacer esto con cualquier clase de excepción derivada, ¡puede agregar mucha información a dicho rastreo! También puede echar un vistazo a mi MWE en GitHub, donde un seguimiento se vería así:
Library API: Exception caught in function 'api_function'
Backtrace:
~/Git/mwe-cpp-exception/src/detail/Library.cpp:17 : library_function failed
~/Git/mwe-cpp-exception/src/detail/Library.cpp:13 : could not open file "nonexistent.txt"
Aquí tienes las comentarios y calificaciones
Si tienes alguna cuestión y capacidad de innovar nuestro post eres capaz de realizar una anotación y con mucho placer lo analizaremos.