创建和使用 SPL 例程 / 异常处理 |
ON EXCEPTION 语句提供捕获任何错误的机制。
要捕获错误,请将一组语句包含在以 BEGIN 与 END 标记的语句块中,并在该语句块的开头添加 ON EXCEPTION IN 语句。如果在跟在 ON EXCEPTION 语句之后的块中发生错误,则您可采取恢复措施。
图: 捕获错误。
BEGIN DEFINE c INT; ON EXCEPTION IN ( -206, -- 表不存在 -217 -- 列不存在 ) SET err_num IF err_num = -206 THEN CREATE TABLE t (c INT); INSERT INTO t VALUES (10); -- 在插入语句之后继续 ELSE ALTER TABLE t ADD(d INT); LET c = (SELECT d FROM t); -- 在选择语句之后继续 END IF END EXCEPTION WITH RESUME INSERT INTO t VALUES (10); -- 如果 t 不存在,则失败 LET c = (SELECT d FROM t); -- 如果 d 不存在,则失败 END
当发生错误时,SPL 解释器搜索捕获该错误的最内层 ON EXCEPTION 声明。捕获错误之后的第一个操作是重置该错误。当完成错误操作代码的执行时,且如果引起错误的 ON EXCEPTION 声明包括了 WITH RESUME 关键字,则以跟在产生了该错误的语句之后的语句自动地恢复执行。如果 ON EXCEPTION 声明未包括 WITH RESUME 关键字,则执行完全地退出当前的块。