Article image
Eduardo Monteiro
Eduardo Monteiro23/02/2024 14:09
Compartilhe

Funções em C#: tratamento de erros usando try-catch!

  • #C#

O que é Tratamento exceções?

O tratamento de exceções é uma parte essencial do desenvolvimento de software, pois permite lidar com erros e situações inesperadas de forma controlada.

Caso a exceção não seja prevista e tratada existe um risco da execução do código simplesmente parar, imagine essa situação em um ambiente de produção! Como não lembrar da famosa "tela azul da morte" do Windows?

image

Em C#, uma das principais maneiras de lidar com exceções é por meio da estrutura try-catch.

O que é try-catch em C#?

A estrutura try-catch é usada em C# para capturar e lidar com exceções durante a execução do código. Ela permite que você monitore trechos de código que podem gerar exceções e tome medidas apropriadas caso isso aconteça.

A estrutura é composta por um bloco try, que contém o código que pode lançar uma exceção, e um ou mais blocos catch, que tratam as exceções capturadas.

Sintaxe básica do try-catch

try
{
  //Código que pode gerar uma exceção
}
catch (Exception ex)
{
  //Tratamento da exceção
}

Entendendo o Funcionamento do try-catch

Quando o código dentro do bloco try lança uma exceção, o controle é transferido imediatamente para o primeiro bloco catch correspondente. O tipo de exceção é comparado com os tipos de exceção especificados nos blocos catch. Se houver uma correspondência, o bloco catch é executado e o fluxo do programa continua normalmente.

Se não houver correspondência entre o tipo de exceção lançada e os tipos de exceção especificados nos blocos catch, a exceção é propagada para níveis superiores da pilha de chamadas até que seja capturada ou o programa termine (pior dos casos). Então fica claro que mesmo que seja feito o tratamento de exceções, ainda é possível que o término do programa ocorra de forma inesperada, mas a chance disso ocorrer diminui muito!

Exemplos Práticos

Teoria entendida, vamos ver como é feita a implementação dessa importante função!

Vamos considerar alguns cenários comuns em que o tratamento de exceções é essencial: Banco de Dados e Manipulação de Arquivos!

Exemplo 1: Conexão com o Banco de Dados

using System;
using System.Data.SqlClient;

class Program
{
  static void Main()
  {
      try
      {
          SqlConnection conn = new SqlConnection("ConnectionString");

          //Abrir a conexão
          conn.Open();

          //Realizar operações no banco de dados
      }
      catch (SqlException ex)
      {
          Console.WriteLine("Erro ao conectar ao banco de dados: " + ex.Message);
      }
      catch (Exception ex)
      {
          Console.WriteLine("Ocorreu um erro inesperado: " + ex.Message);
      }
  }
}

Neste exemplo, tentamos abrir uma conexão com o banco de dados. Se ocorrer um erro de conexão (por exemplo, falha de autenticação), uma exceção do tipo SqlException será lançada e capturada pelo primeiro bloco catch. Se ocorrer qualquer outro tipo de exceção, será capturada pelo segundo bloco catch. Uma ótima solução pois permite tratar de forma muito eficaz as possíveis exceções.

Exemplo 2: Manipulação de Arquivos

using System;
using System.IO;

class Program
{
  static void Main()
  {
      try
      {
          string filePath = "caminho/do/arquivo.txt";

          //Ler o conteúdo do arquivo
          string content = File.ReadAllText(filePath);
          
          //Realizar operações com o conteúdo do arquivo
      }
      catch (FileNotFoundException ex)
      {
          Console.WriteLine("Arquivo não encontrado: " + ex.Message);
      }
      catch (IOException ex)
      {
          Console.WriteLine("Erro de E/S: " + ex.Message);
      }
      catch (Exception ex)
      {
          Console.WriteLine("Ocorreu um erro inesperado: " + ex.Message);
      }
  }
}


Neste exemplo, tentamos ler o conteúdo de um arquivo. Se o arquivo não for encontrado, uma exceção do tipo FileNotFoundException será capturada. Se ocorrer qualquer outro erro de Entrada ou Saída, será capturado como IOException. Qualquer outra exceção será capturada pelo bloco catch genérico.

Tratar exceções faz parte da rotina do programador!

O tratamento de exceções é uma prática fundamental no desenvolvimento de software, e o try-catch em C# oferece uma maneira eficaz de lidar com exceções de forma controlada. Por meio de exemplos práticos, pudemos entender como aplicar o try-catch em situações do mundo real, como conexão com banco de dados e manipulação de arquivos. Ao dominar o uso adequado do try-catch, os desenvolvedores podem escrever códigos mais robustos e confiáveis, melhorando a qualidade e a confiabilidade de suas aplicações!

Aprenda mais sobre tratamento de exceções em C#!

A documentação oficial da Microsoft sobre tratamento de exceções em C# fornece uma explicação detalhada da estrutura try-catch e suas diversas nuances. Acesse em: Microsoft Docs - Tratamento de Exceções em C#

Compartilhe
Comentários (0)