Partilhar via


Não aumente exceções em locais inesperados

TypeName

DoNotRaiseExceptionsInUnexpectedLocations

CheckId

CA1065

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

Um método que não deve lançar exceções lança uma exceção.

Descrição da regra

Métodos que não deve lançar exceções podem ser categorizados sistema autônomo segue:

  • Propriedade Get métodos

  • Métodos de acesso do evento

  • É igual a métodos

  • Métodos GetHashCode

  • Métodos ToString

  • Construtores estático

  • Finalizadores

  • Descartar métodos

  • Operadores de igualdade

  • Operadores caso implícitas

As seções a seguir discutem esses tipos de método.

Propriedade Get métodos

As propriedades são campos basicamente inteligentes.Portanto, eles devem se comportam sistema autônomo um campo sempre que possível.Campos não lançar exceções e nem devem propriedades.Se você tiver uma propriedade que lança uma exceção, considere a possibilidade de torná-lo um método.

As exceções a seguir têm permissão para ser lançado de um método get da propriedade:

Métodos de acesso do evento

Acessadores de evento devem ser operações simples não lançar exceções.Um evento não deve lançar uma exceção ao tentar adicionar ou remover um manipulador de eventos.

As exceções a seguir têm permissão para ser lançada do accesor evento:

É igual a métodos

A seguir É igual a métodos não devem lançar exceções:

An É igual a método deve retornar true ou false em vez de gerar uma exceção. Por exemplo, se Equals é passado dois tipos incompatíveis-apenas deve retornar false em vez de gerar um ArgumentException.

Métodos GetHashCode

A seguir GetHashCode métodos devem geralmente lançam exceções não:

GetHashCode sempre deve retornar um valor.Caso contrário, você pode perder itens na tabela de hash.

As versões de GetHashCode que levam um argumento pode lançar uma ArgumentException. No entanto, objeto.GetHashCode nunca deve lançar uma exceção.

Métodos ToString

O depurador usa Object.ToString para ajudar a exibir informações sobre objetos em formato de seqüência de caracteres. Portanto, ToString não deve alterar o estado de um objeto e ele não deve lançar exceções.

Construtores estático

Lançar exceções a partir de um construtor estático faz com que o tipo a ser inutilizável no domínio do aplicativo corrente.Você deve ter um motivo muito mercadoria (sistema autônomo um problema de segurança) para gerar uma exceção de um construtor estático.

Finalizadores

Lançando uma exceção de um finalizador faz com que o CLR falhas rápidas e que tears o processo.Portanto, gerar exceções em um finalizador deve sempre ser evitada.

Descartar métodos

A IDisposable.Dispose ou [M:System.IDisposable.Dispose(bool disposing)] método não deve lançar uma exceção. Dispose é freqüentemente chamado sistema autônomo parte da lógica em um de Limparfinally cláusula. Portanto, explicitamente, lançando uma exceção de Dispose força o usuário a adicionar dentro de de manipulação de exceçãofinally cláusula.

The Dispose(False) caminho de código nunca deve lançar exceções, porque isso quase sempre é chamado de um finalizador.

Operadores de igualdade (==,! =)

Assim como os métodos Equals, operadores de igualdade devem retornar qualquer um dos true ou false e não deve lançar exceções.

Operadores de reforço implícita

Porque o usuário é geralmente não sabem que um operador de conversão implícita tiver sido chamado, uma exceção lançada pelo operador de conversão implícita é completamente inesperada.Portanto, não permitir exceções devem ser lançadas de operadores de conversão implícita.

Como corrigir violações

Para a propriedade getters, ou alterar a lógica para que ele não tem mais a lançar uma exceção ou altere a propriedade para um método.

Para todos os outros método tipos listados anteriormente, altere a lógica para que não deve lançar uma exceção.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se a violação tiver sido causada por uma declaração em vez de uma exceção gerada uma exceção.

Regras relacionadas

Não aumente exceções em cláusulas de exceção

Consulte também

Outros recursos

Avisos de design