zoukankan      html  css  js  c++  java
  • oracle 自定义异常处理


    --第一种方式:使用raise_application_error抛出自定义异常
    declare
    i number:=-1;
    begin
    if i=-1 then
    raise_application_error(-20000,'参数值不能为负'); --抛出自定义异常
    end if;
    exception
    when others then
    dbms_output.put_line('err_code:'||sqlcode||';err_msg:'||sqlerrm); --进行异常处理
    raise; --继续抛出该异常
    end;

    --第二种方式,使用 exception 进行异常的定义
    declare
    i number:=-1;
    my_err exception; --自定义异常
    PRAGMA EXCEPTION_INIT(my_err, -01476); --初始化异常(我理解就是将该异常绑定到某个错误代码上)
    begin
    if i=-1 then
    raise my_err; --抛出自定义异常
    end if;
    exception
    when my_err then --捕捉自定义异常
    dbms_output.put_line('err_code:'||sqlcode||';err_msg:'||sqlerrm); --异常处理
    raise; --继续抛出这个自定义异常
    when others then --捕捉其它异常
    dbms_output.put_line('err_code:'||sqlcode||';err_msg:'||sqlerrm); --异常处理
    raise; --继续抛出异常
    end;

    第一种方式自定义异常的代码范围为:-20000到-20300
    第二种方式的好处是,可以将自定义异常绑定到某上具体的预定义错误代码上,
    如ORA-01476: divisor is equal to zero
    这样我们就可以捕捉自定义异常而不需要用 others 进行捕捉了.但也不是所有的预定义异常都可以绑定,这个需要使用的时候自己多试试

  • 相关阅读:
    SVN菜单说明
    Jabber Software:Jabber-NET、agsXMPP与Wilefire[转]
    nuget的使用总结
    SET QUOTED_IDENTIFIER ON
    SET ANSI_NULLS ON
    SQL Server性能杀手
    How to open .ccproj in VS2010?
    Bios里,把SATA Mode Selection改为AHCI无法启动
    [转]内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结
    使用EF连接现有数据库
  • 原文地址:https://www.cnblogs.com/champaign/p/5882107.html
Copyright © 2011-2022 走看看