WEB开发网
开发学院数据库Oracle 全面解析Oracle developer的异常处理机制 阅读

全面解析Oracle developer的异常处理机制

 2008-11-17 12:59:20 来源:WEB开发网   
核心提示: 当异常抛出后,控制无条件转到异常部分,全面解析Oracle developer的异常处理机制(5),这就意味着控制不能回到异常发生的位置,当异常被处理和解决后,如果在同一块的异常部分没有处理这个异常的处理器,那么异常将会传播到上一层的异常部分中,控制返回到上一层执行部分的下一条语句, BE

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

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

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