5.1 异常处理概念
异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误
和自定义错误,由于 PL/SQL 程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行.
有三种类型的异常错误:
1. 预定义 ( Predefined )错误
ORACLE 预定义的异常情况大约有 24 个。对这种异常情况的处理,无需在程序中定义, 由 ORACLE 自动
将其引发。
2. 非预定义 ( Predefined )错误
即其他标准的 ORACLE 错误。对这种异常情况的处理,需要用户在程序中定义,然后由 ORACLE 自动将
其引发。
3. 用户定义(User_define) 错误
程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理, 需要用户在程序中定义,
然后显式地在程序中将其引发。
异常处理部分一般放在 PL/SQL 程序体的后半部,结构为:
EXCEPTION
WHEN first_exception THEN <code to handle first exception >
WHEN second_exception THEN <code to handle second exception >
WHEN OTHERS THEN <code to handle others exception >
END;
异常处理可以按任意次序排列,但 OTHERS 必须放在最后
预定义的异常处理(对应的错误可以在下面的表中找到)
declare v_sal employees.salary%type; begin select salary into v_sal from employees where employee_id >100; dbms_output.put_line(v_sal); exception when Too_many_rows then dbms_output.put_line('输出的行数太多了'); end;
非预定义异常的处理(需要把错误与异常对象相关联)
declare
--声明一个异常
delete_mgr_excep exception;
--把自定义的异常和oracle的错误关联起来
PRAGMA EXCEPTION_INIT(delete_mgr_excep,-2292);
begin
delete from employees where employee_id=100; exception when e_deleteid_excception then dbms_output.put_line('违反完整性约束条件,故不可删除此用户'); end;
用户自定义异常 java中用throw来抛出一个异常oracle中用rasie来抛出一个异常