我刚读过this question,解决方案声明:
你不知道自己得到了这个事实 NO_DATA_FOUND异常表明 你做了最大的一个 PL / SQL开发人员犯的错误:
EXCEPTION -- Never do this in real code!!! WHEN OTHERS THEN NULL; END;
你能解释一下这句话中的错误是什么,你会怎么做才能避免这样做......
答案 0 :(得分:14)
问题是,您正在捕获所有异常,然后忽略它们。你什么时候出错都不会知道。
答案 1 :(得分:1)
如果您不希望pl / sql块的异常传播任何进一步的代码,那么这段代码没有任何问题。如果你故意这样做,那不是错误的代码或错误。这是pl / sql中的所有问题。并且在代码中可能存在嵌套BEGIN / EXCEPTION / END块的情况,并且如果特定的代码交叉部分失败,则可能不希望事务失败。如果你出于任何原因/要求故意这样做,你就不能说它是错误的编码。
BEGIN
--something important here
--something even more important here
BEGIN
--something secondary goes here but not important enough to stop the process or
--log a message about it either
--maybe send an informative email to the support group or
--insert a log message when debugging the process or
--the list could go on and on here
EXCEPTION
--I don't care if this block fails, absorbing all errors regardless of type
WHEN OTHERS THEN NULL;
END;
-- something super important here, must happen
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- do something useful for this exception
WHEN OTHERS THEN
-- do something by default if we don't expect this error
END;
答案 2 :(得分:-2)
总是编码不好。如果你故意这样做,你可以说这是糟糕的编码。事实上,如果你故意这样做,那就是可怕的代码,因为它证明了你对你完全忽略的所有错误的理解程度很低。
http://stevenfeuersteinonplsql.blogspot.com/2017/02/now-not-to-handle-exceptions.html
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1155066278457