¿Sigues desplazándote hacia abajo? ¡Aqui tienes!
Esta pregunta me hizo retroceder un tiempo.
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
finally
{
console.writeline("Finally block");
}
console.writeline("After finally");
¿Qué se imprimiría en el escenario anterior? Sí, lo acerté:
ej., mensaje - lo que sea (probablemente intento de división por cero)
Finalmente bloquear
Después de finalmente
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
throw(ex);
}
finally
{
console.writeline("Finally block");
}
console.writeline("After finally");
¿Qué imprimiría esta? ¡Nada! Lanza un error ya que el bloque catch generó un error.
En una buena estructura de programación, sus excepciones se canalizarían, en el sentido de que este código se manejará desde otra capa. Para estimular tal caso, probaré este código.
try
{
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
throw(ex);
}
finally
{
console.writeline("Finally block")
}
console.writeline("After finally");
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
En este caso, la salida sería:
- Finalmente bloquear
- por ejemplo, mensaje, sea lo que sea.
Está claro que cuando detecta una excepción y la lanza nuevamente a otras capas (Funneling), el código después del lanzamiento no se ejecuta. Actúa de manera similar a cómo funciona un retorno dentro de una función.
Ahora sabe por qué no cerrar sus recursos en códigos después del bloque de captura. Colóquelos en el bloque finalmente.