1.java的例外就是try{}catch(Exception e) {}finally{},当没有处理异常的时候,向上一层调用者抛出异常,如果异常最终没有被处理,则由java的虚拟机进行处理。
2.oracle的异常处理
Value_error (算术或转换异常),算术:负数不能开方
Timeout_on_resource(在等待资源时发生超时)
分布式数据库:物理上数据库不再一起,但是逻辑上在一起的数据库。
思考? 当分布式数据库之间的网络断后,如何进行恢复?
3.被0除
--被0除 set serveroutput on declare pnum number; begin pnum :=1/0; exception --when相当于catch,then相当于大括号 when zero_divide then dbms_output.put_line('1:0不能做分母'); dbms_output.put_line('2:0不能做分母'); when value_error then dbms_output.put_line('算术或者转换异常');
--catch所有的异常,相当于java当中的exception; when others then dbms_output.put_line('其他例外'); end; /
4.自定义例外
raise 相当于java当中的throw,定义例外相当于自定义一个变量,类型为exception。pmon:进程失败时执行进程恢复。可以使用命令行的jps查看进程号
--查询50号部门的员工姓名 set serveroutput on declare --50号部门当中没有员工 cursor cemp is select ename from emp where deptno=50; pename emp.ename%type; --自定义例外 no_emp_found exception; begin open cemp; fetch cemp into pename; if cemp%notfound then --抛出例外 raise no_emp_found; end if; close cemp; exception when no_emp_found then dbms_output.put_line('没有找到员工'); when others then dbms_output.put_line('其它例外'); end; /