c exception handling tutorial with code examples
O tratamento de exceções é um método para tratar erros que podem ocorrer durante a execução de um programa. Este tutorial explica o tratamento de exceções em C # com exemplos de código:
melhor software de manutenção grátis para windows 10
O tratamento de exceções é usado para garantir que o fluxo do programa continue, mesmo se houver um erro de tempo de execução. As exceções são os objetos que são lançados ao encontrar qualquer erro de tempo de execução.
Se as exceções não forem tratadas, o C # produzirá uma mensagem de exceção e encerrará o programa. É aqui que o tratamento de exceções entra em cena.
=> Leia o guia C # para iniciantes aqui
O que você aprenderá:
- O que são exceções?
- Palavras-chave para tratamento de exceções
- Classes de exceção presentes em C #
- Tratamento de exceções em C #
- Conclusão
- Leitura recomendada
O que são exceções?
As exceções são erros sem precedentes que podem ocorrer dentro do seu programa durante a execução. Na maioria das vezes, os programadores podem detectar facilmente alguns dos erros, como validação ou verificação de nulos ou durante a verificação de alguns valores.
Mas há momentos em que não podemos prever o que ou quando um erro aparecerá. Por exemplo, digamos que estou procurando um arquivo em um local. Meu programa funcionará perfeitamente bem até que o arquivo esteja presente e, se de alguma forma o arquivo for excluído, meu programa exibirá um erro.
As exceções não ocorrem regularmente, mas ainda podem acontecer e você sempre desejará tratá-las com cuidado. Para lidar com isso, usamos o tratamento de exceções.
Sempre que ocorre um erro, dizemos que foi lançado, 'lançado' é um objeto de System.Exception classe em C #. O System.Exception classe oferece diferentes métodos e propriedades que fornecem detalhes sobre o erro que seu programa acabou de encontrar.
Como a propriedade de rastreamento de pilha que fornece a pilha para a qual o problema ocorreu ou a propriedade de Mensagem que fornece uma descrição da exceção.
Palavras-chave para tratamento de exceções
As exceções oferecem um processo para controlar uma determinada parte do programa de forma que, mesmo se houver uma exceção nessa parte, o controle do programa seja transferido para outra parte do programa. No C #, o tratamento de exceções é basicamente construído em torno de quatro palavras-chave: jogue, tente, pegue e finalmente .
lançar
Como já discutimos, jogar é um objeto de System.Exception classe no C #. Ele permite que o programa gere um erro sempre que encontrar um.
tentar
O bloco try inclui o bloco do código que pode fazer com que o programa lance uma exceção. Ele é seguido por um ou mais blocos catch.
pegar
Quando o bloco try encontra uma exceção, ele fornece o controle ao bloco catch para capturar a exceção. O bloco catch também pode conter um conjunto de códigos que o programa precisa executar no caso de uma exceção ou pode apenas capturar a exceção e não fazer nada dependendo do cenário e do requisito.
finalmente
O bloco final é usado para executar um fragmento de código ou instrução particular, independentemente da ocorrência de uma exceção. Finalmente, o bloco é sempre executado e pode ser executado logo após o bloco de tentativa se o programa não encontrar nenhuma exceção ou pode ser executado após o bloco catch, uma vez que o programa detecta uma exceção.
Classes de exceção presentes em C #
Todas as exceções no C # são derivadas direta ou indiretamente do System.Exception classe.
garantia de qualidade e diferença de controle de qualidade
Vamos dar uma breve olhada em algumas das exceções mais comuns:
- System.IO.IOException: Ele lida com todos os erros relacionados à entrada e saída.
- System.DividedByZeroException: Lida com o erro gerado quando um número é dividido por zero.
- System.NullReferenceException : Lida com qualquer erro que possa ocorrer quando um objeto nulo é referenciado.
- System.IndexOutOfRangeException: Lida com o erro gerado quando um programa tenta acessar um índice que está fora do intervalo da matriz.
- System.OutOfMemoryException: Lida com o erro gerado devido à presença de memória insuficiente.
Tratamento de exceções em C #
C # tem uma solução muito bem definida para lidar com qualquer tipo de exceção que possa ocorrer usando o bloco try e catch. Usando este bloco, a instrução central do programa pode ser separada das outras instruções.
Exemplo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
No exemplo acima, incluímos nosso código para abrir um arquivo no bloco try. Como não fornecemos nenhum caminho de arquivo válido, o código deve gerar um erro. Agora, detectamos o erro em nosso bloco catch. Se o arquivo não existir no caminho de arquivo fornecido, o código lançará uma FileNotFoundException.
Esta exceção será capturada pelo bloco catch onde já definimos a exceção esperada. Agora, vamos imaginar que se nosso código lançar alguma outra exceção, diferente daquela que já definimos, nosso bloco não será capaz de capturá-la. Para capturar qualquer exceção genérica, adicionaremos outro bloco catch.
Vamos dar uma olhada em nosso código atualizado:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Este bloco catch genérico será capaz de capturar todas as exceções que podem ser lançadas dentro do bloco try. Agora, vamos também adicionar um bloco finally para concluir isso. Para simplificar, vamos apenas imprimir uma mensagem usando o bloco finally.
como consertar o gateway padrão do Windows 10
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Aqui, acabamos de adicionar o bloco finally com uma mensagem simples. Você também pode adicionar algumas instruções personalizadas no bloco. Mas a estrutura geral do programa permanecerá semelhante à exibida aqui.
O bloco Finalmente será sempre executado independentemente de haver uma exceção ou não. O programa iniciará a partir do bloco try e então moverá diretamente para o bloco finally se não houver erros / exceções. Se encontrar uma exceção, ele se moverá para capturar primeiro e, em seguida, executará o bloco final.
Existe uma condição em que o bloco finally não será executado?
Como o nome sugere, o bloco final é executado no final e é o bloco final do código que será executado. Por fim, o bloco sempre será executado quando o aplicativo estiver em execução. O único momento em que o bloco final não será executado é quando o aplicativo trava ou é intencionalmente encerrado usando o comando de processo.
Conclusão
Se as exceções não forem tratadas adequadamente, elas causarão um erro no seu programa. Se você não usou blocos try / catch em qualquer lugar dentro de seu código, então seu programa irá abortar com uma mensagem mostrando a exceção. Para um usuário genérico, será muito difícil rastrear o erro até o código-fonte e resolvê-lo.
Portanto, é sempre uma boa prática fornecer tratamento de exceção em seu programa.
Código de amostra
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Veja nossa série completa de treinamento C # aqui
Leitura recomendada
- Tutorial de funções / métodos C # com exemplos de código
- Tutorial Python DateTime com exemplos
- Tutorial SVN: Gerenciamento de código-fonte usando Subversion
- Tutorial de string C # - Métodos de string com exemplos de código
- Tratamento de exceções em C ++
- Tutorial do Tortoise SVN: revisões no repositório de código
- Tutorial do AWS CodeBuild: Extraindo código do Maven Build
- Como lidar com exceções em scripts SoapUI Groovy - Tutorial # 11 do SoapUI