异常类型 [size=; font-size: 70%,70%]uOracle 预定义异常,隐式产生 [size=; font-size: 70%,70%]u非Oracle预定义异常,隐式产生 [size=; font-size: 70%,70%]u用户定义异常,显式产生 [size=; font-size: 70%,70%]u每种错误都有一个标准的名字,在异常处理子程序中可以直接引用这些名字。如下预定义异常: [size=; font-size: 70%,70%]uNO_DATA_FOUND [size=; font-size: 70%,70%]uTOO_MANY_ROWS [size=; font-size: 70%,70%]uINVALID_CURSOR [size=; font-size: 70%,70%]uZERO_DIVIDE [size=; font-size: 70%,70%]uDUP_VAL_ON_INDEX [size=; font-size: 70%,70%]u捕捉异常的方法指导: [size=; font-size: 70%,70%]uWHEN OTHERS 这个子句应当放在异常处理模块的最后。 [size=; font-size: 70%,70%]u异常处理部分以关键字EXCEPTION打头。 [size=; font-size: 70%,70%]u在异常处理部分可以有多个异常处理句柄。 [size=; font-size: 70%,70%]u但在跳出该块之前,只应当有一个异常处理句柄被调用。 捕捉异常:
EXCEPTION WHEN exception1 [OR exception2 . . .] THEN statement1; statement2; . . . [WHEN exception3 [OR exception4 . . .] THEN statement1; statement2; . . .] [WHEN OTHERS THEN statement1; statement2; . . .] 实例: EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE ('Cannot found ' ||
TO_CHAR(v_deptno) || '. Please check data. ');
WHEN too_many_rows THEN
DBMS_OUTPUT.PUT_LINE (‘Too many rows return about ' ||
TO_CHAR(v_deptno) || '. Please check data. ');
WHEN others THEN
DBMS_OUTPUT.PUT_LINE (‘ Get error ' || sqlerrm || '. Please check dept data. '); END; |