C/Visual C - Atrapar todas las excepciones

 
Vista:

Atrapar todas las excepciones

Publicado por oscar (1 intervención) el 20/06/2007 22:33:22
El problem es que necesito capturar la excepcion cuando haya division por cero 7u otro tipo de excepcion, asi q hice lo siguiente :

main(){
int myvalue = 0;
int myvector[2];
try{
myvector[100] = 100;
myvalue = 100 / myvalue;
}catch( exception & e ){
cout << "exception A" << endl;
}catch(...){
cout << "exception B" << endl;
}
return 0;
}

pero no ingresa a los CATCHs y el ejecutable termina con el mensaje: Floating point exception", pero cuando compilo con -O3 ya no sucede, lo q necesito es algo q atrape todo tipo de excepcion, supuestamente catch(...) deberia hacerlo pero no funciona, por que no funciona !!!!! tengo q poner alguna opcion al compilar ??? (ya intente con -fexception y -overflow pero nada ) HELP !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Atrapar todas las excepciones

Publicado por fernando.gomez (1603 intervenciones) el 21/06/2007 00:01:42
main(){
int myvalue = 0;
int myvector[2];
try{
myvector[100] = 100;
if (myvalue == 0) // <--------------------------
return 0; // <--------------------------
myvalue = 100 / myvalue;
}catch( exception & e ){
cout << "exception A" << endl;
}catch(...){
cout << "exception B" << endl;
}
return 0;
}

El problema es que la división entre cero no levanta una excepción, sino un comportamiento indefinido. Por lo mismo, cada compilador decide qué hacer en esos casos. Lo recomendable, por supuesto, es evitar los comportamientos indefinidos. O bien, consultar la documentación de tu compilador para saber qué hacer en esos casos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar