begin
begin
do something;
exception
when no_data_found then
raise_application_error(-20000,"Message");
end;
exception
when others then
raise_application_error(-20000,"Other message");
end;
我的问题是,当编译器捕获“消息”错误时,它也会捕获“其他消息”错误。为什么会这样?
答案 0 :(得分:4)
尝试将它们放在同一个异常块中。
如果您将when others
放在一个单独的区块中,它就会被提升,因为......在该区块中排除already catched
之外没有others
例外。
来自doc
WHEN OTHERS子句用于捕获尚未由命名系统异常和命名程序定义的异常处理的所有剩余异常。
所以
exception
when no_data_found then
raise_application_error(-20000,"Message");
when others then
raise_application_error(-20000,"Other message");
end;