Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





.NET - Bloque "try finally" no funciona

Iniciado por [EX3], 05 de Diciembre de 2007, 10:31:38 AM

« anterior - próximo »

[EX3]

Perplejo me he quedado haciendo unas pruebas tanto en Visual Basic .NET como en C# donde el siguiente codigo sacado de la propia MSDN no ha funcionado:
// try-finally
using System;
public class MainClass
{
   static void Main()
   {
       int i = 123;
       string s = "Some string";
       object o = s;

       try
       {
           // Invalid conversion; o contains a string not an int
           i = (int)o;
       }
       finally
       {
           Console.Write("i = {0}", i);
       }
   }
}

Me salta la excepcion igualmente en vez de saltar al bloque finally. No se supone que ocurra la catastrofe que ocurra deberia ejecutar si o si el bloque finally? :shock:

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Warchief

Poner el finally no te exime de poner un catch para la excepción apropiada. A pesar de saltar la excepción, el finally se ejecuta. Si no has capturado la excepción, el programa hace un crash excelente, pero el finally se ejecuta sí o sí.

El ejemplo es un poco "minimalista". Uno más interesante:

using System;
public class MainClass
{
   static void Do()
   {
       int i = 123;
       string s = "Some string";
       object o = s;
       try
       {
           // Invalid conversion; o contains a string not an int
           i = (int)o;
       }
       finally
       {
           Console.WriteLine( "i = {0}", i );
       }
   }

   static void Main()
   {
       try
       {
           Do();
       }
       catch
       {
           Console.WriteLine( "El Do() la ha cagado" );
       }
   }
}


Citar
i = 123
El Do() la ha cagado


[EX3]

Cita de: "Warchief"El ejemplo es un poco "minimalista".
Es el que utiliza de ejemplo la MSDN en la entrada referida a la palabra clave "finally":
http://msdn2.microsoft.com/es-es/library/zwc8s4fz(VS.80).aspx

Acaba un compañero mio de hacer una prueba en Java y parece ser que si, que la excepcion no se anula, se escapa hacia afuera hasta dar con catch que la recoja para despues volver al finally del try que la genero, curioso :?

Gracias por la explicacion y el ejemplo, Warchief.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.