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

PL/SQL的异常处理机制的初步探讨

 2007-05-12 12:24:06 来源:WEB开发网   
核心提示: 在声明部分抛出的异常将控制转到上一层的异常部分,BEGINexecutable statementsBEGINtoday DATE:='SYADATE'; --ERRRORBEGIN --内部块开始dbms_output.put_line('this line wi

在声明部分抛出的异常将控制转到上一层的异常部分。  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

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

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

处理异常将停止异常的传播和解决。有时用户希望在错误发生时,程序仍然能执行一些动作,要达到这个目的,可以把希望执行的动作放在异常处理器中,然后执行不带参数的RAISE语句,RAISE语句将重新抛出出现的异常,允许他继续传播。  DECLARE
  order_too_old EXCEPTION;
  BEGIN
  RAISE order_too_old;
  EXCEPTION
  WHEN order_too_old THEN
  DECLARE
  file_handle UTL_FILE.FILE_TYPE;
  BEGIN
  --open file
  file_handle:=UTL_FILE.FOPEN
  (location=>'/ora01/app/oracle/admin/test/utlsir'
  ,filename=>'error.log'
  .open_mode=>'W');
  --write error stack
  UTL_FILE.PUT_LINE(filehandle,
  DBMS_UTILITY.FORMAT_ERROR_STACK);
  --write the call stack
  UTL_FILE.PUT_LINE(filehandle,
  DBMS_UTILITY.FORMAT_CALL_STACK);
  --close error log
  UTL_FILE.FCLOSE(file_handle);
  RAISE; --re-raise the exception
  END
  END

上一页  1 2 3 4 5  下一页

Tags:PL SQL 异常

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