如何处理未预定义的PL / SQL错误?
预定义的例外情况如下:
答案 0 :(得分:4)
您可以使用查看WHEN OTHERS
的{{1}}异常处理程序。但是,通常最好定义一个可以处理的异常。这将导致更清晰的代码,它允许您将异常名称映射到一个数字,并使用户定义的异常看起来就像预定义的异常。
SQLCODE
答案 1 :(得分:1)
您可以使用以下方法处理预定义之外的错误:
BEGIN
buggyprocedure; --Call to a procedure that can throw exceptions
EXCEPTION
WHEN NO_DATA_FOUND THEN --Catch predefined exception
NULL; --Ignore no_data_found
WHEN OTHERS THEN --Catch all other exceptions
IF SQLCODE = -1408 THEN --Catch error -1408
NULL; --Ignore this exception
ELSEIF SQLCODE = -955 THEN --Catch error -955
anotherprocedure; --Call a different procedure
ELSE
RAISE; --Re-raise exception that we are not handling
END IF;
END;
您基本上捕获所有其他异常,然后使用if
和else
语句检查返回的SQLCODE
是否是您期望和想要处理的。