做下面的代码是不好的做法吗?写下它会不会发生在我身上?在PL/SQL中使用全局异常是不好的做法吗?
编辑:这只是一个例子。我不会使用dbms_output来进行任何实际的错误报告。
CREATE OR REPLACE PACKAGE my_package
AS
PROCEDURE master;
END;
/
CREATE OR REPLACE PACKAGE BODY my_package
AS
my_global_interrupt EXCEPTION;
PROCEDURE my_private_procedure
IS
BEGIN
-- in case some flag is raised, raise exception to stop process and prepare for resume
RAISE my_global_interrupt;
END;
PROCEDURE master
IS
BEGIN
my_private_procedure;
EXCEPTION
WHEN my_global_interrupt THEN
dbms_output.put_line('global interrupt, ');
-- prepare to resume
END;
END;
/
你需要小心RAISE my_x#。它会丢失发生原始错误的行号。这可能会使调试更加困难。你可以使用:DBMS_UTILITY.FORMAT_ERROR_BACKTRACE。 – David 2009-12-23 17:06:58
公平点。像许多事情一样,总会有警告和扩展,在你知道它之前,你已经顺利地进入了OPP5 http://oreilly.com/catalog/9780596514464(1232pp)。但是显然日志和其他东西是错误处理的重要组成部分,应该在级联异常之前在错误点完成。 – APC 2009-12-23 17:24:20