Quiz sobre C# – Excepciones

Para los amantes de C# :-D, cuál es la diferencia entre las excepciones producidas por Foo1 y Foo2?

csharp:
using System;
class Program
{
    static void Main(string[] args)
    {
        try {
            Foo1();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
        Console.WriteLine("------------------");
        try {
            Foo2();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
    }
    private static void Foo1()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw ex;
        }
    }
    private static void Foo2()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw;
        }
    }
    private static void Bar()
    {
        throw new Exception("Error!");
    }
}

4 Replies to “Quiz sobre C# – Excepciones”

  1. La sentencia Throw a secas (Foo2) sólo puede ser lanzada dentro de un bloque Catch y por tanto, siempre devuelve, la excepción actual.
    La sentencia Throw ex (Foo1) puede ser lanzada desde un bloque Try y por tanto, crea una nueva escepción.

    Creo que esa es la diferencia entre ambas excepciones... una es simplemente la excepcion actual, y la otra es una "sobrecarga" del tipo exception.

    Para mas info se puede observar la traza o source de la excepcion para comprobar que no son iguales.

    Un Salido
    Galle

  2. Efectivamente Galle, si sólo utiliza throw es como si nunca se hubiera capturado la excepción.

    Saludos

Comments are closed.