Así que estaba escribiendo un código y noté que aparte de sintáctico, tipo y otros errores en tiempo de compilación, C++ no arroja ninguna otra excepción. Así que decidí probar esto con un programa muy trivial:C++ Exception Handling
#include<iostream>
int main() {
std::count<<5/0<<std::endl;
return 1
}
Cuando compilado usando g ++, g ++ me dio una advertencia diciendo que estaba dividiendo por 0. Pero todavía el código compilado. Luego, cuando lo ejecuté, imprimió un número arbitrario realmente grande. Cuando quiero saber es, ¿cómo lidia C++ con las excepciones? La división de enteros por 0 debería ser un ejemplo muy trivial de cuándo debe lanzarse una excepción y el programa debe terminar.
¿Tengo que encerrar esencialmente todo mi programa en un gran bloque de prueba y luego detectar ciertas excepciones? Sé en Python cuando se lanza una excepción, el programa terminará inmediatamente e imprimirá el error. ¿Qué hace C++? ¿Hay incluso excepciones de tiempo de ejecución que detienen la ejecución y matan el programa?
Gracias eso tiene sentido. Entonces otra pregunta. Si en lugar de usar std :: cout, utilizo std :: cerr, ¿arrojaría esto una excepción, o simplemente imprimiría en la secuencia de error? Y si creo mi propia excepción (digamos foo) y en mi código digo throw foo, ¿se matará mi programa inmediatamente y se imprimirá foo.what()? ¿O tengo que decirle explícitamente a C++ que lo haga? – user1413793
@ user1413793: Si escribe en 'std :: cerr', simplemente se imprimirá en la secuencia de error. Puede enviar el flujo de salida y el flujo de error a diferentes lugares a través de la redirección en la línea de comando ('>' vs '2>'). Si "arrojas" una excepción, y no la encuentras en ningún lado, el programa terminará inmediatamente e imprimirá un mensaje de error. (Más precisamente, se llamará a una función llamada 'std :: terminate', cuyo comportamiento predeterminado es terminar el programa e imprimir el mensaje de la excepción. Puede anular el comportamiento llamando a' std :: set_terminate'. Mire eso si usted Estoy interesado. – HighCommander4