oracle 忽略异常处理,oracle – PL / SQL异常处理:do nothing(忽略异常)

- 日理万妓 2022-10-21 13:52 303阅读 0赞

虽然我同意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;

发表评论

表情:
评论列表 (有 0 条评论,303人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PL/SQL 异常处理

    1.预定义异常 对于系统预定义异常,用户无需在程序中定义,它们将由Oracle自动引发。 1.1如下:如果用户试图使用完全相同的主键值向同一表中插入两条记录,则系统会