C sharp - Manejo de excepciones

 
Vista:

Manejo de excepciones

Publicado por Ruiz Federico (3 intervenciones) el 18/07/2012 20:35:59
Hola gente, he estudiado todo (o eso creo) acerca de excepciones, leído cada texto que ofrece la ayuda de microsoft pero aún no he entendido la razón del siguiente código:

1
2
3
4
5
6
7
8
9
10
int x = 0;
            try
            {
                Console.WriteLine(1.0 / x);
                Console.WriteLine(1 / x);
                Console.WriteLine("Ok");
            }
            catch
            {
            }


Ejecutando devuelve:

Infinito

Es decir, se ejecuta la primer linea ya que los operadores de punto flotante no generan excepciones, devuelve infinito, la segunda línea genera excepción, ejecuta catch, pero luego... no debería ejecutarse Console.WriteLine("Ok") ?.
La pregunta en concreto es, luega de haber "cacheado" una excepción, no tiene que continuar con las lineas siguientes del bloque try?

Muchas gracias de antemano.
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

Manejo de excepciones

Publicado por m (97 intervenciones) el 19/07/2012 16:26:00
No es asi una vez
que se ejecuta una excepcion no
sigue con la siguiente instruccion
sino que despues de la excepcion pasa
a
Catch y alli se ejecuta lo que se haya
definido.

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

Manejo de excepciones

Publicado por Sebastian Cruz (51 intervenciones) el 20/07/2012 19:30:49
Como te mecionaron previamente el problema es que las excepciones no trabajan como la estas planteado ya que cuando se presenta una se corta la ejecucion del bloque try para pasar a realizar al catch, pero una vez que entra a un bloque catch la linea de ejecucion no regresa a bloque que la origino sino que sigue de largo, por lo tanto si deseas realizar un codigo que siempre se ejecute independientemente de los bloques try catch tienes dos alternativas

1) solo coloca la seccion try catch en aquellos parametros donde puede darse la excepcion y el resto que debe ejecutarse siempre debe caer fuera de estos bloques

2) duplica codigo en cada bloque para que asi continue con la parte del codigo que deberia haberse ejecutado con todas las validaciones q eso conlleva con lo cual no te recomendaria esta ultima opcion

Tambien si te sirve se puede declarar un tercer bloque a la estructura try/catch que se llama finally y todo lo que se encuentre en ese segmento se va a ejecutar independientemente si entro al try o al catch

Recuerda que los try y catch gastan muchos recursos de procesamiento por lo cual es mejor que solo esten ubicados en sectores concretos, y si es posible que sean bien indentificados los tipos de excepciones para ante la aparicion de uno el programa reaccione mas velozmente que cuando es generico el error y tiene q ponerse a determinar el tipo de excepcion a lanzar
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