例外

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;
/            

 

转载于:https://www.cnblogs.com/glblog/p/5983306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值