WEB开发网
开发学院数据库Oracle oracle 中的exception 阅读

oracle 中的exception

 2008-10-25 12:58:00 来源:WEB开发网   
核心提示: 当异常抛出后,控制无条件转到异常部分,oracle 中的exception(5),这就意味着控制不能回到异常发生的位置,当异常被处理和解决后,控制将转到这里END;5、异常的传播没有处理的异常将沿检测异常调用程序传播到外面,当异常被处理并解决或到达程序最外层传播停止,控制返回到上一层执行部

当异常抛出后,控制无条件转到异常部分,这就意味着控制不能回到异常发生的位置,当异常被处理和解决后,控制返回到上一层执行部分的下一条语句。

  BEGIN
  DECLARE
  bad_credit exception;
  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 exception;
  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;

5、异常的传播

没有处理的异常将沿检测异常调用程序传播到外面,当异常被处理并解决或到达程序最外层传播停止。在声明部分抛出的异常将控制转到上一层的异常部分。

  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:oracle exception

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