terça-feira, 10 de setembro de 2013

Blocos Try, Catch e Finally em C#

Exceções? Muito falado e muito usado, porém quem esta começando terá dificuldades. Vou apresentar o famoso bloco Try,Catch.
Imagine em um cenário onde você irá fazer uma conexão com o banco de dados e retornar uma tabela (DataSet), porém o banco esta OFF-LINE, por tanto não conseguiu a conexão, PAN! Erro. Caso esteja utilizando ASP .NET pagina amarela, bom por que não tratar este erro de forma simples e não parar seu processo? Utilize o Try, Catch. Veja exemplo abaixo:

Sua forma simples seria:
            try
            {
            }
            catch
            {
            }
O Try seria tua ação e caso venha ocorrer algum erro ele irá entrar no bloco Catch caso contrario continuará normalmente. Agora com o conhecimento básico vamos ao bloco com o Finally.
            try
            {
            }
            catch
            {
            }
            finally
            {
            }
Tanto o Try quanto o Catch continuará da mesma forma, e o Finally irá representar o terceiro bloco de códigos, ele será executado independente do try ou catch isso quer dizer que se der erro ele entra no Finally e caso não der erro ele também entra, é uma passagem obrigatória. Vamos ao exemplo:
        static void Main(string[] args)
        {
            long lngResultado;
            long lngValor = 0;

            try
            {
                //Vamos dividir 8 pelo lngValor (0) irá dar erro pois não é uma divisão possivel. Irá entrar no Catch
                lngResultado = 8 / lngValor;
            }
            catch
            {
                Console.WriteLine("catch");
            }
            finally
            {
                Console.WriteLine("finally");
            }

        }
    }
Também poderemos utilizar o Exception para informar o erro, veja abaixo:
    class Program
    {
        static void Main(string[] args)
        {
            long lngResultado;
            long lngValor = 0;

            try
            {
                //Vamos dividir 8 pelo lngValor (0) irá dar erro pois não é uma divisão possivel.
                lngResultado = 8 / lngValor;
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.WriteLine("finally");
            }

        }
    }
Espero que tinha sido útil

0 comentários:

Postar um comentário