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 进行捕捉了.但也不是所有的预定义异常都可以绑定,这个需要使用的时候自己多试试

转载于:https://www.cnblogs.com/champaign/p/5882107.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值