visual valid remarks name method example documentacion comment comentarios c# java .net exception try-finally

c# - valid - ¿Qué pasa si ambos bloques de captura y finalmente lanzan una excepción?



summary param name c# (5)

¿Qué pasa si ambos bloques de captura y finalmente lanzan una excepción?


Cuando catch arroja una excepción, finalmente se ejecutará el bloque y luego saldrá con una excepción. Si el bloque finally arroja una excepción, el bloque saldrá con una excepción.


HI Nwaman, creo que tu respuesta es incorrecta, la he probado en la aplicación de Windows, la encontré si escribes un programa como el de abajo.

try { string s = "hu"; int i = int.Parse(s); } catch (Exception ex) { string s = "hu"; int i = int.Parse(s); throw new Exception(); } finally { MessageBox.Show("hi"); }

y esto no dará lugar finalmente a excute,


La última excepción lanzada es arrojada.



Cuando el bloque finally arroja una excepción, efectivamente ocultará la excepción lanzada desde el bloque catch y será la que finalmente se lanzará. Por lo tanto, es importante registrar excepciones cuando se capturen, o asegurarse de que el bloque finally no arroje por sí mismo una excepción, de lo contrario, puede obtener excepciones que son sofocadas y nunca vistas.