概述
虽然我同意99%的时间是不好的做法,默默地忽略异常,而不是至少将它们记录在某个地方,但是具体情况是完全可以接受的.
在这些情况下,NULL是你的朋友:
[...]
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
忽略例外可能需要的两种典型情况是:
1)您的代码包含一个您知道的语句可能会偶尔失败,您不希望此事件中断您的程序流程.
在这种情况下,您应该将嵌套的语句包含在嵌套块中,如下例所示:
CREATE OR REPLACE PROCEDURE MY_PROCEDURE()
IS
l_empoyee_name EMPLOYEES.EMPLOYEE_NAME%TYPE;
BEGIN
-- Catch potential NO_DATA_FOUND exception and continue
BEGIN
SELECT EMPLOYEE_NAME
INTO l_empoyee_name
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 12345;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END;
do_stuff();
EXCEPTION
WHEN OTHERS THEN
-- Propagate exception
RAISE;
END;
请注意,PL / SQL通常不允许从Visual Basic知道的“错误恢复继续”类型的异常处理,其中所有异常都被忽略,并且程序继续运行,就好像没有发生任何事情一样(参见On error resume next type of error handling in PL/SQL oracle).您需要在嵌套块中明确地包含潜在的失败语句.
2)你的程序是不重要的,忽略它抛出的所有异常不会影响你的主程序逻辑. (但是,这种情况很少,经常会导致长期的调试噩梦)
BEGIN
do_stuff();
EXCEPTION
WHEN OTHERS THEN
-- Ignore all exceptions and return control to calling block
NULL;
END;
最后
以上就是疯狂小松鼠为你收集整理的oracle 忽略异常处理,oracle – PL / SQL异常处理:do nothing(忽略异常)的全部内容,希望文章能够帮你解决oracle 忽略异常处理,oracle – PL / SQL异常处理:do nothing(忽略异常)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复