Compartilhar via


Hierarquia de exceções

Há dois tipos de exceções: exceções geradas por um programa em execução e exceções geradas pelo common language runtime. Além disso, há uma hierarquia de exceções que podem ser lançadas por um aplicativo ou pelo tempo de execução.

Exceção é a classe base para exceções. Várias classes de exceção herdam diretamente de Exception, incluindo ApplicationException e SystemException. Essas duas classes constituem a base para quase todas as exceções de tempo de execução.

A maioria das exceções que derivam diretamente de Exception não adicionam nenhuma funcionalidade à classe Exception. Por exemplo, a hierarquia de Classe InvalidCastException é da seguinte maneira:

Object    Exceção       SystemException          InvalidCastException

O tempo de execução gera classe derivada apropriada de SystemException quando ocorrem erros. Esses erros resultam de verificações falhas do tempo de execução (como erroz de matriz e fora dos limites ) e podem ocorrer durante a execução de qualquer método. Se você estiver criando um aplicativo que cria novas exceções, você deve derivar essas exceções da classe Exception. Não é recomendável que você capture uma SystemException , nem é boa prática de programação lançar uma SystemException no seu aplicativo.

As exceções mais graves — aqueles lançadas pelo tempo de execução ou em condições irrecuperáveis — incluem ExecutionEngineException, StackOverflowException e OutOfMemoryException.

Exceções de interoperações derivam de SystemException e são ainda mais estendidas por ExternalException. Por exemplo, COMException é a exceção lançada durante operações de interoperabilidade COM e deriva de ExternalException. Win32Exceptione SEHException também derivam de ExternalException.

Hierarquia de exceções de tempo de execução

O tempo de execução tem um conjunto base de exceções que derivam de SystemException que ele lança ao executar instruções individuais. A tabela a seguir lista hierarquicamente as exceções padrão fornecidas pelo tempo de execução e as condições em que você deve criar um classe derivada.

Tipo de exceção

Tipo base

Descrição

Exemplo

Exceção

Object

Classe base para todas as exceções.

Nenhum (use uma classe derivada desta exceção).

SystemException

Exceção

Classe base para todos os erros gerados pelo tempo de execução.

Nenhum (use uma classe derivada desta exceção).

IndexOutOfRangeException

SystemException

Lançada pelo tempo de execução somente quando uma matriz é indexada incorretamente.

Indexar uma matriz fora do seu intervalo válido:

arr[arr.Length+1]

NullReferenceException

SystemException

Lançada pelo tempo de execução somente quando um objeto nulo é referenciado.

object o = null;

o.ToString();

AccessViolationException

SystemException

Lançada pelo tempo de execução somente quando é acessada memória inválida.

Ocorre ao interoperar com código não gerenciado ou código gerenciado não seguro, e um ponteiro inválido é usado.

InvalidOperationException

SystemException

Lançada por métodos quando em um estado inválido.

Chamar Enumerator.GetNext() depois de remover um Item da coleção subjacente.

ArgumentException

SystemException

Classe base para todas as exceções de argumentos.

Nenhum (use uma classe derivada desta exceção).

ArgumentNullException

ArgumentException

Lançada por métodos que não permitem que um argumento seja nulo.

String s = null;

"Calculate".IndexOf (s);

ArgumentOutOfRangeException

ArgumentException

Lançada por métodos que verificam se os argumentos estão em um determinado intervalo.

String s = "string";

s.Chars[9];

ExternalException

SystemException

Classe base para exceções que ocorrem ou são direcionados para ambientes fora do tempo de execução.

Nenhum (use uma classe derivada desta exceção).

ComException

ExternalException

Exceção que encapsula informações COM HRESULT.

Usada em interoperabilidade COM.

SEHException

ExternalException

Exceção que encapsula informações de manipulação estruturada de exceções do Win32.

Usada em interoperações de código não gerenciado.

Consulte também

Conceitos

Classe Exception e suas Propriedades

Práticas recomendadas para tratamento de exceções

Tratamento e lançamento de exceções

Outros recursos

Fundamentos da Manipulação de Exceções