Usuário com melhor resposta
Técnica Tratamento de exceções

Pergunta
-
Bom dia.
Eu implemento em todos os métodos que persistem dados tratamento de exceções especificas para facilitar o controle dos erros. Basicamente os tipos de exceções tratadas são os mesmos, então eu tenho o mesmo trecho de código repetido em cada um dos métodos, que são muitos dentro do projeto. Alguém poderia me orientar se existe uma forma desse trecho de código que trata as exceções ser "centralizado"?
meu tratamento está assim após o fechamento do Try:
catch (DbEntityValidationException ex)
{
var mensagens = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
var todos = string.Join("; ", mensagens);
var mensagem = string.Concat("Erros de validação: ", todos);
throw new Exception(mensagem);
}
catch (DbUpdateException ex)
{
string mensagem = "";
var sqlException = ex.GetBaseException() as SqlException;
if (sqlException != null)
{
foreach (SqlError item in sqlException.Errors)
{
mensagem += item.Message;
}
}
throw new Exception(mensagem);
}
catch (System.Data.ConstraintException exc)
{
throw new Exception(exc.Message);
}
catch (System.Data.EntityException ex)
{
throw new Exception(ex.Message);
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
obrigado
Ricardo
Ricardo S. Pulini
Respostas
-
Olá,
Dê uma olhada no conceito de Generic Repository Pattern. Falando brevemente, você irá desacoplar o modelo de domínio de sua aplicação da lógica de acesso a dados. Assim, você terá um RepositoryBase que centralizará essa lógica de acesso, inclusive os tratamentos de exceções comuns.
Veja mais sobre o assunto nesses links abaixo:
http://www.macoratti.net/11/10/net_pr1.htm
Espero ter ajudado!
Hudson Carvalho
- Marcado como Resposta Ricardo Pulini sábado, 22 de abril de 2017 15:18
Todas as Respostas
-
Olá,
Dê uma olhada no conceito de Generic Repository Pattern. Falando brevemente, você irá desacoplar o modelo de domínio de sua aplicação da lógica de acesso a dados. Assim, você terá um RepositoryBase que centralizará essa lógica de acesso, inclusive os tratamentos de exceções comuns.
Veja mais sobre o assunto nesses links abaixo:
http://www.macoratti.net/11/10/net_pr1.htm
Espero ter ajudado!
Hudson Carvalho
- Marcado como Resposta Ricardo Pulini sábado, 22 de abril de 2017 15:18
-