查看附件以检查 PL/SQL 代码。
SET serveroutput ON
DECLARE
past_due EXCEPTION;
acct_num NUMBER;
BEGIN
DECLARE
past_due EXCEPTION;
acct_num NUMBER;
due_date DATE := sysdate -1;
todays_date DATE := sysdate;
BEGIN
IF due_date < todays_date THEN
raise past_due;
END IF;
END;
EXCEPTION
WHEN past_due THEN
dbms_output.put_line('handling past_due exeption.');
WHEN OTHERS THEN
dbms_output.put_line('could not recognize rxception.');
END;
关于代码的执行,哪项陈述是正确的?
A. 代码中引发的异常由 PAST_DUE 异常的异常处理程序处理。
B. 它不会执行,因为您不能在子块中声明具有相似名称的异常。
C. 子块中引发的 PAST_DUE 异常导致程序突然终止,因为子块中没有异常处理程序。
D. 封闭块引发的 PAST_DUE 异常不会传播到外部块,而是由 WHEN OTHERS 异常处理程序处理。
在垃圾场中,答案是 C,但我认为它是 D