Pessoal,
Ao criar minhas exceptions para um sistema, seria uma boa eu colocar o Log4J já dentro destas exceptions? Ou seja, a partir do momento em que ocorrer uma exceção, esta já será gravada de acordo com a configuração do Log4J e não precisarei ficar colocando logger.xxx no meu código! Além de deixar as mensagens padronizadas. O que vcs acham? Veem algum problema com isto?
Exemplo abaixo contém somente a idéia!
Ao invés de eu fazer isso:
...
} catch (SQLException e) {
String msgErro = "Erro ao executar a query do método XXX!";
logger.fatal(msgErro);
throw new MinhaSQLException(msgErro, e);
}
Farei isto:
...
} catch (SQLException e) {
throw new MinhaSQLException("XXX!", e);
}
A mensagem completa estará dentro da própria MinhaSQLException, deixando assim as mensagens padronizadas, como dito acima.
ASOBrasil
hmmmm, eu gosto dessa abordagem - desde que vc crie uma hierarquia decente de exceção (não adianta criar uma única exceção - genérica e usá-la por todo seu código). Isso irá reduzir seu código em apenas uma linha - a linha de chamada do log.
É sempre bom ver se vc pode subclassificar suas exceções (a mensagem pode não ser suficiente) - Isso porque vc não terá mais a linha/classe exata em que o log foi disparado, agora essa linha/classe apontará pra sua exception …
Se amanhã ou depois vc decidir por desligar o log basta alterar o log4j.properties para uma exceção específica (isso que é lesgal!)
Óbviamente estamos falando apenas de exceções - suas outras chamadas de log continuarão onde estão (pra manter as informações da classe/linha loggada).
Bom o que fazemos aqui em nossa empresa
usamos orientacao ASPECT ou seja assim que acontecer a exception ele ira chamar o método que automaticamente ira colocar a exception nos properties
mas estou com problemas para colocar as exceptions no codigo
assim que conseguir postarei aqui