Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 lançando 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 lançadas devido a uma falha em seu código ou no código que você chama (como uma biblioteca compartilhada), recursos indisponíveis do sistema operacional, condições inesperadas que o tempo de execução encontra (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 pode se recuperar da maioria das exceções de tempo de execução.
No .NET, uma exceção é um objeto que herda da System.Exception classe. Uma exceção é lançada de uma área de código onde ocorreu um problema. A exceção é passada para cima na pilha até que a aplicação a manipule ou o programa seja encerrado.
Exceções versus métodos tradicionais de tratamento de erros
Tradicionalmente, o modelo de tratamento de erros de uma linguagem dependia da maneira exclusiva da linguagem de detetar erros e localizar manipuladores para eles, ou do mecanismo de tratamento de erros fornecido pelo sistema operacional. A maneira como o .NET implementa o tratamento de exceções oferece as seguintes vantagens:
O lançamento e a manipulação de exceções funcionam da mesma forma para linguagens de programação .NET.
Não requer nenhuma sintaxe de linguagem específica para lidar com exceções, mas permite que cada linguagem defina sua própria sintaxe.
As exceções podem ser lançadas através dos limites do processo e até mesmo da máquina.
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 erros, como códigos de retorno. As falhas não passam despercebidas porque se uma exceção for lançada e você não lidar com ela, o ambiente de execução encerrará a sua aplicação. Os valores inválidos não continuam a propagar-se pelo sistema como resultado de um código que não consegue verificar 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 causa-las.
Tipo de exceção | Descrição | Exemplo |
---|---|---|
Exception | Classe base para todas as exceções. | Nenhum (use uma classe derivada desta exceção). |
IndexOutOfRangeException | Lançado pelo tempo de execução somente quando uma matriz é indexada incorretamente. | Indexação de uma matriz fora do seu intervalo válido: arr[arr.Length+1] |
NullReferenceException | Lançado pelo tempo de execução somente quando um objeto nulo é referenciado. | object o = null; o.ToString(); |
InvalidOperationException | Lançado por métodos quando em um estado inválido. | Depois de remover um item da coleção subjacente, chamar Enumerator.MoveNext() . |
ArgumentException | Classe base para todas as exceções de argumento. | Nenhum (use uma classe derivada desta exceção). |
ArgumentNullException | Lançado por métodos que não permitem que um argumento seja nulo. | String s = null; "Calculate".IndexOf(s); |
ArgumentOutOfRangeException | Lançado por métodos que verificam se os argumentos estão em um determinado intervalo. | String s = "string"; s.Substring(s.Length+1); |
Ver também
- Classe de exceção e propriedades
- Como usar o bloco Try-Catch para capturar exceções
- Como: Usar exceções específicas num bloco de captura
- Como lançar exceções de forma explícita
- Como criar exceções User-Defined
- Usando os manipuladores de exceção User-Filtered
- Como: Usar finalmente blocos
- Lidando com exceções de interoperabilidade COM
- Práticas recomendadas para exceções
- O que todo desenvolvedor precisa saber sobre exceções no tempo de execução