Normalmente em java ou C# , eu usaria uma construção a seguir ao tentar detectar erros.
Manipulação de Exceção Ruim em C# e Java
try
{
// do something
}
catch(Exception ex)
{
}
Bom Tratamento de Exceções em Java e C#
try
{
}
catch(ArgumentException ex)
{
log(ex);
// java throw
throw ex;
// in C#, throw only, is better since it keeps stack trace
throw;
}
catch(Exception ex)
{
// this is catch ALL others block
log(ex);
// java throw
throw ex;
// in C#, throw only, is better since it keeps stack trace
throw;
}
Em C# e java , eu usaria bibliotecas de registro. java: log4j, veja outros https://stackoverflow.com/questions/3042450/what-log4j-alternative-logging-libraries-are-available
.Net: log4net, Nlog etc.
Em PL/SQL
Manuseio de Exceção Ruim
BEGIN
-- Do Something
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN
null;
WHEN OTHERS THEN
null;
END;
Bom Tratamento de Exceções
BEGIN
-- Do Something
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN
LOG
RAISE
WHEN OTHERS THEN
LOG
RAISE
END;
uma simples pesquisa no Google traz o pacote log4plsql: http://log4plsql.sourceforge.net/
- Existem outras bibliotecas?
- Eles são predominantes na programação PL/SQL?
A Documentação Oracle para Tratamento de Erros não fornece dicas sobre log.
Dá a seguinte frase e usa dbms_output.put_line para registro:
"Às vezes, você deseja gerar novamente uma exceção, ou seja, tratá-la localmente e, em seguida, passá-la para um bloco de inclusão. Por exemplo, você pode querer reverter uma transação no bloco atual e, em seguida, registrar o erro em um bloco de inclusão. "
Prevalente? Não. Não é incomum, no entanto, escrever um procedimento como este:
Em seguida, você pode adicionar chamadas
write_to_log
onde for necessário em todo o código.Você pode estar procurando pelo
DBMS_UTILITY
pacote:No entanto, você deve implementar qualquer funcionalidade de registro por conta própria.
DBMS_UTILITY Documentação