Pergunta

O Close método em um ICommunicationObject pode lançar dois tipos de exceções conforme descrito no MSDN aqui.Eu entendo por que Close método pode lançar essas exceções, mas o que não entendo é por que o Dispose método em um proxy de serviço chama o Close método sem try em torno dele.Não é seu Dispose método o único lugar onde você deseja ter certeza de não lançar nenhuma exceção?

Foi útil?

Solução

Parece ser um padrão de design comum no código .NET.Aqui está uma citação de Diretrizes de design de estrutura

Considere fornecer o método Close(), além de Dispose(), se close for a terminologia padrão na área.Ao fazer isso, é importante que você torne a implementação Close idêntica a Dispose...

Aqui está um postagem no blog no qual você pode encontrar uma solução alternativa para este problema de design System.ServiceModel.ClientBase

Outras dicas

Sim, normalmente Dispose é um dos lugares onde você deseja garantir que exceções não sejam lançadas.No entanto, com base neste MSDN tópico do fórum houve algumas razões históricas para esse comportamento.Como tal, o padrão recomendado é o paradigma try{Close}/catch{Abort}.

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