WEB开发网
开发学院数据库Oracle PL/SQL异常处理初步 阅读

PL/SQL异常处理初步

 2006-12-30 11:51:53 来源:WEB开发网   
核心提示: BEGINDECLAREbad_credit;BEGINRAISE bad_credit;--发生异常,控制转向;EXCEPTIONWHEN bad_credit THENdbms_output.put_line('bad_credit');END;--bad_credit
BEGIN
 DECLARE
  bad_credit;
 BEGIN
  RAISE bad_credit;
   --发生异常,控制转向;
 EXCEPTION
  WHEN bad_credit THEN
   dbms_output.put_line('bad_credit');
  END;
  --bad_credit异常处理后,控制转到这里
 EXCEPTION
  WHEN OTHERS THEN
   --控制不会从bad_credit异常转到这里
   --因为bad_credit已被处理
END;

当异常发生时,在块的内部没有该异常处理器时,控制将转到或传播到上一层块的异常处理部分。

BEGIN
 DECLARE ---内部块开始
  bad_credit;
 BEGIN
  RAISE bad_credit;
   --发生异常,控制转向;
  EXCEPTION
  WHEN ZERO_DIVIDE THEN --不能处理bad_credite异常
   dbms_output.put_line('divide by zero error');
  END --结束内部块
   --控制不能到达这里,因为异常没有解决;
   --异常部分
  EXCEPTION
  WHEN OTHERS THEN
   --由于bad_credit没有解决,控制将转到这里
END;

异常传播

没有处理的异常将沿检测异常调用程序传播到外面,当异常被处理并解决或到达程序最外层传播停止。

在声明部分抛出的异常将控制转到上一层的异常部分。

BEGIN
executable statements
BEGIN
today DATE:='SYADATE'; --ERRROR
BEGIN --内部块开始
dbms_output.put_line('this line will not execute');
EXCEPTION
WHEN OTHERS THEN
--异常不会在这里处理
END;--内部块结束
EXCEPTION
WHEN OTHERS THEN
处理异常
END

执行部分抛出的异常将首先传递到同一块的异常部分,如果在同一块的异常部分没有处理这个异常的处理器,那么异常将会传播到上一层的异常部分中,一直到最外层。

上一页  1 2 3 4 5  下一页

Tags:PL SQL 异常

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接