通常在 java 或 C# 中,我会在尝试捕获错误时使用以下构造。
C# 和 Java 中的错误异常处理
try
{
// do something
}
catch(Exception ex)
{
}
Java 和 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;
}
在 C# 和 java 中,我会使用日志库。java:log4j,见其他 https://stackoverflow.com/questions/3042450/what-log4j-alternative-logging-libraries-are-available
.Net:log4net、Nlog 等
在 PL/SQL 中
错误的异常处理
BEGIN
-- Do Something
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN
null;
WHEN OTHERS THEN
null;
END;
良好的异常处理
BEGIN
-- Do Something
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN
LOG
RAISE
WHEN OTHERS THEN
LOG
RAISE
END;
一个简单的谷歌搜索带来 log4plsql 包:http ://log4plsql.sourceforge.net/
- 还有其他图书馆吗?
- 它们在 PL/SQL 编程中很普遍吗?
Oracle 错误处理文档未提供有关日志记录的提示。
它给出以下句子并使用 dbms_output.put_line 进行日志记录:
“有时,您想重新引发异常,即在本地处理它,然后将其传递给封闭块。例如,您可能希望回滚当前块中的事务,然后在封闭块中记录错误。 "
流行?不,但是,编写这样的过程并不少见:
write_to_log
然后,您可以在代码中需要的地方添加调用。您可能正在寻找
DBMS_UTILITY
包裹:但是,您必须自己实现任何日志记录功能。
DBMS_UTILITY 文档