Classe e propriedades da exceção

A classe Exception é a classe base da qual as exceções herdam. Por exemplo, a hierarquia de classe InvalidCastException é como se segue:

Object
  Exception
    SystemException
      InvalidCastException

A classe Exception tem as propriedades a seguir, que ajudam a facilitar o entendimento de uma exceção.

Nome da propriedade Descrição
Data Um IDictionary que contém dados arbitrários em pares chave-valor.
HelpLink Pode conter uma URL (ou URN) para um arquivo de ajuda que fornece informações abrangentes sobre a causa de uma exceção.
InnerException Essa propriedade pode ser usada para criar e manter uma série de exceções durante o tratamento de exceção. Você pode usá-lo para criar uma nova exceção contendo exceções previamente capturadas. A exceção original pode ser capturada pela segunda exceção na propriedade InnerException, permitindo que o código que trata da segunda exceção examine as informações adicionais. Por exemplo, suponha que você tem um método que recebe um argumento que está formatado de modo inadequado. O código tenta ler o argumento, mas uma exceção é gerada. O método captura a exceção e gera um FormatException. Para melhorar a capacidade do chamador para determinar o motivo pelo qual que uma exceção é gerada, às vezes é desejável que um método capture uma exceção gerada por uma rotina auxiliar e, em seguida, gere uma exceção mais indicativa do erro que ocorreu. Uma exceção mais nova e mais significativa pode ser criada, na qual a referência à exceção interna pode ser definida para a exceção original. Essa exceção mais significativa pode, em seguida, ser gerada para o chamador. Observe que com essa funcionalidade você pode criar uma série de exceções vinculadas que termina com a primeira exceção gerada.
Message Fornece detalhes sobre a causa de uma exceção.
Source Obtém ou define o nome do aplicativo ou objeto que causa o erro.
StackTrace Contém um rastreamento de pilha que pode ser usado para determinar onde um erro ocorreu. O rastreamento de pilha inclui o nome do arquivo de origem e o número de linha de programa se informações de depuração estiverem disponíveis.

A maioria das classes que herdam de Exception não implementa membros adicionais nem fornece funcionalidade adicional; apenas herdam de Exception. Portanto, as informações mais importantes para uma exceção podem ser encontradas na hierarquia de classes de exceção, no nome da exceção e nas informações contidas na exceção.

É recomendável gerar e capturar apenas objetos que derivam de Exception, mas é possível gerar como uma exceção qualquer objeto que derive da classe Object. Observe que nem todas as linguagens dão suporte à geração e captura de objetos que não derivam de Exception.

Confira também