Pérola: como dificultar o tratamento de erro de aplicações
Vamos dar uma olhada no método abaixo, que foi pego de uma situação real (mudei os nomes de variáveis para evitar que reclamem que o coloquei aqui). Nesta aplicação, há uma necessidade de sincronizar dados de usuários, buscando dados do sistema A e atualizando no sistema B.
public static void AtualizarUsuarios()
{
try
{
using (BatchFacade batchFacade = new BatchFacade())
{
List<Usuario> usuariosSistemaA = batchFacade.ListarUsuariosSistemaA().GetRegistros<List<Usuario>>();
List<Usuario> usuariosSistemaB = batchFacade.ListarUsuariosSistemaB().GetRegistros<List<Usuario>>();
foreach (Usuario usuarioA in usuariosSistemaB)
{
Usuario usuarioB = usuariosSistemaA.Find(delegate(Usuario u)
{
return u.SIAP.Equals(usuarioA.Codigo.ToString());
});
if (usuarioB != null && UsuarioModificado(usuarioA, ref usuarioB))
{
batchFacade.AtualizarUsuario(usuarioB);
}
}
}
}
catch
{
throw new ApplicationException("Falha ao atualizar os dados dos usuários");
}
}Esta aplicação possui um tratamento de erro genérico, que grava no eventlog todos os erros que ocorrem no sistema. Agora imaginem que ocorra um erro durante o processamento deste método: neste caso, a execução irá cair no block catch, e uma exception do tipo ApplicationException será lançada, com o texto "Falha ao atualizar os dados de usuários".
Agora imaginem vocês, com um erro em ambiente de produção, tendo apenas essa mensagem para descobrir o problema que está acontecendo. É nessas horas que a gente tem vontade de matar quem programa nas coxas, apenas se importando em entregar a funcionalidade e nem ligando para a pessoa que irá cuidar dessa tranqueira do sistema.
O simples fato de obter a exception original e passá-la como inner exception da ApplicationException que estamos lançando já ajuda, pois na rotina de tratamento de erros genérico podemos pegar os detalhes que ajudarão em muito identificar o problema. Neste caso, o problema era uma informação que vinha faltando no banco de dados.
[]'s
Comentários
Postar um comentário