Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os aplicativos devem ser capazes de lidar com erros que ocorrem durante a execução de maneira consistente. O .NET fornece um modelo para notificar aplicativos de erros de maneira uniforme: as operações do .NET indicam falha gerando exceções.
Exceções
Uma exceção é qualquer condição de erro ou comportamento inesperado encontrado por um programa em execução. Exceções podem ser geradas devido a uma falha em seu código ou no código que você chama (como uma biblioteca compartilhada), recursos do sistema operacional não disponíveis, condições inesperadas encontradas pelo runtime (como código que não pode ser verificado) e assim por diante. Seu aplicativo pode se recuperar de algumas dessas condições, mas não de outras. Embora você possa se recuperar da maioria das exceções de aplicativo, não é possível se recuperar da maioria das exceções de runtime.
No .NET, uma exceção é um objeto que herda da System.Exception classe. Uma exceção é lançada de uma área do código em que ocorreu um problema. A exceção é passada pilha acima até que o aplicativo trate dela ou o programa seja encerrado.
Exceções versus métodos tradicionais de tratamento de erros
Tradicionalmente, o modelo de tratamento de erros de um idioma dependia da maneira exclusiva do idioma de detectar erros e localizar manipuladores para eles ou no mecanismo de tratamento de erros fornecido pelo sistema operacional. A maneira como o .NET implementa o tratamento de exceções fornece as seguintes vantagens:
A geração e o tratamento de exceções funcionam da mesma forma para linguagens de programação do .NET.
Não requer nenhuma sintaxe de linguagem específica para lidar com exceções, mas permite que cada idioma defina sua própria sintaxe.
Exceções podem ser geradas pelos limites de processo e até mesmo de computador.
O código de tratamento de exceções pode ser adicionado a um aplicativo para aumentar a confiabilidade do programa.
As exceções oferecem vantagens em relação a outros métodos de notificação de erro, como códigos de retorno. As falhas não passam despercebidas porque, se uma exceção for gerada e você não lidar com ela, o runtime encerrará seu aplicativo. Valores inválidos não continuam a se propagar pelo sistema como resultado de um código que não verifica se há um código de retorno de falha.
Exceções comuns
A tabela a seguir lista algumas exceções comuns com exemplos do que pode causar.
| Tipo de exceção | Descrição | Exemplo |
|---|---|---|
| Exception | Classe base para todas as exceções. | Nenhum (use uma classe derivada dessa exceção). |
| IndexOutOfRangeException | Gerada pelo runtime somente quando uma matriz é indexada incorretamente. | Indexando uma matriz fora de seu intervalo válido: arr[arr.Length+1] |
| NullReferenceException | Gerado pelo runtime somente quando um objeto nulo é referenciado. | object o = null; o.ToString(); |
| InvalidOperationException | Gerada por métodos quando em um estado inválido. | Chamar Enumerator.MoveNext() após a remoção de um item da coleção subjacente. |
| ArgumentException | Classe base para todas as exceções de argumento. | Nenhum (use uma classe derivada dessa exceção). |
| ArgumentNullException | Gerada por métodos que não permitem que um argumento seja nulo. | String s = null; "Calculate".IndexOf(s); |
| ArgumentOutOfRangeException | Lançados por métodos que verificam se os argumentos estão em um determinado intervalo. | String s = "string"; s.Substring(s.Length+1); |
Consulte também
- Propriedades e classe de exceção
- Como usar o bloco Try-Catch para capturar exceções
- Como usar exceções específicas em um bloco catch
- Como lançar exceções explicitamente
- Como criar exceções de User-Defined
- Usar manipuladores de exceção filtrados por usuário
- Como usar blocos finally
- Manipulando exceções de interoperabilidade COM
- Práticas recomendadas para exceções
- O que todo desenvolvimento precisa saber sobre exceções no runtime