在业务处理过程中,有时希望能在异常出现时,记录我们的异常信息但不退出系统,以便继续执行后续操作。下面的代码给出了一种实现的方法,主要依据是exception可以出现在任意义个begin和end块之间,而不像我原来所想当然的认为是只能出现在一个事务的结尾部分,如下所示代码中,在出现异常时,oracle将执行完异常代码后会继续转到loop循环的下一次操作。
declare
myexception exception;
begin
for i in 1..10 loop
begin
if mod(i,3) = 0 then
raise myexception;
else
dbms_output.put_line(i);
end if;
exception
when myexception then
dbms_output.put_line('写入异常'||i);
end;
end loop;
end;