Pergunta

Eu estou decorando meu código C # com comentários para que eu possa produzir arquivos de ajuda HTML.

Muitas vezes eu declarar e interfaces de documentos. Mas as classes que implementam essas interfaces pode lançar exceções específicas dependendo da implementação.

Às vezes, o cliente só tem conhecimento das interfaces que ele está usando. I deve documentar minhas relações adicionando as possíveis exceções que podem ser lançadas por seus implementadores?

Devo criar / exceções personalizadas documento de modo que as interfaces implementadores jogar estes em vez das do quadro?

Espero que isso é claro!

Graças

EDIT 4 de janeiro de 2010: Eu decidi escrever um post sobre isso e exceções personalizadas em .NET em http://blog.mikecouturier.com/2010/01/creating-custom-exceptions-in-net-right.html

Foi útil?

Solução

Não tenho a certeza eu entendi perfeitamente a sua pergunta (e eu sou um Java, não desenvolvedor C #), mas parece que você está perguntando sobre o que é essencialmente uma questão de polimorfismo: se alguém usa um método em uma interface que é declarou que jogar X e Y, o que acontece se uma implementação lança Z?

Uma coisa a seguir é o princípio da conformidade, que, essencialmente, diz que um subtipo deve estar de acordo com o comportamento do supertipo. Ou seja, se você está documentando que o seu método na interface só pode lançar exceções de um tipo (por exemplo, exceções de ponteiro nulo), então o seu contrato com o interlocutor é que esta é a única coisa que eles devem prestar atenção para. Se você jogar outra coisa, você poderia ser surpreendendo-os.

Documentação coisas sobre um subtipo específico do supertipo não é uma boa ideia, uma vez que cria acoplamento desnecessário. Eu estaria mais preocupado com o fato de que uma implementação pode se comportar de forma diferente do que a declaração, uma vez que poderia sugerir a declaração não é desenvolvida o suficiente.

Tente pensar que são todos os tipos de exceções que o método poderia jogar. Criar supertipos para eles, e, em seguida, declarar explicitamente em seu método de interface (por exemplo, este método pode lançar alguma exceção "cálculo"). Então, na sua implementação, lançar uma exceção cálculo com mais detalhes, ou jogar algum subtipo da exceção cálculo que é específico para a implementação, você ainda estaria em conformidade.

Outras dicas

Eu concordo com tudo Uri diz -. Você deve onde sensato criar exceções personalizadas que podem ser estendidos se necessário, em seguida, um método que utiliza um parâmetro digitado a sua interface pode pegar essa exceção e ele irá capturar exceções subtipadas bem

Não crie-los desnecessariamente, porém, se há uma exceção .Net Framework existente que descreve o seu erro uso condição que

Em termos de documentação para implementadores você pode usar a seção de comentários dos comentários (supondo que você está usando comentários XML) para descrever coisas como você esperaria implementadores de fazer as coisas. Obviamente, isso não é de forma exequível mas pode servir como orientações úteis quando um desenvolvedor trata de usar sua API

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top