WITH REPORT; USE REPORT;
PROCEDURE C85009A IS
MY_EXCEPTION : EXCEPTION;
MY_EXCEPTION2 : EXCEPTION RENAMES MY_EXCEPTION;
CONSTRAINT_ERROR2 : EXCEPTION RENAMES CONSTRAINT_ERROR;
I : INTEGER := 1;
BEGIN
TEST ("C85009A", "CHECK THAT PREDEFINED AND USER-DEFINED " &
"EXCEPTIONS CAN BE RENAMED AND THAT HANDLERS " &
"REFERRING TO EITHER NAME ARE INVOKED WHEN " &
"THE EXCEPTION IS RAISED, EVEN BY AN EXPLICIT " &
"'RAISE' STATEMENT REFERRING TO THE OTHER NAME");
BEGIN
RAISE MY_EXCEPTION;
FAILED ("MY_EXCEPTION NOT RAISED");
EXCEPTION
WHEN MY_EXCEPTION2 =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED BY MY_EXCEPTION");
END;
BEGIN
RAISE MY_EXCEPTION2;
FAILED ("MY_EXCEPTION2 NOT RAISED");
EXCEPTION
WHEN MY_EXCEPTION =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED BY MY_EXCEPTION2");
END;
DECLARE
TYPE COLORS IS (RED, BLUE, YELLOW);
E : COLORS := RED;
BEGIN
E := COLORS'PRED(E);
IF NOT EQUAL(COLORS'POS(E),COLORS'POS(E)) THEN
COMMENT("DON'T OPTIMIZE E");
END IF;
FAILED ("CONSTRAINT_ERROR NOT RAISED BY PRED(RED)");
EXCEPTION
WHEN CONSTRAINT_ERROR2 =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED BY PRED(RED)");
END;
BEGIN
RAISE CONSTRAINT_ERROR;
FAILED ("CONSTRAINT_ERROR NOT RAISED");
EXCEPTION
WHEN CONSTRAINT_ERROR2 =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED BY CONSTRAINT_ERROR");
END;
BEGIN
RAISE CONSTRAINT_ERROR2;
FAILED ("CONSTRAINT_ERROR2 NOT RAISED");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED BY CONSTRAINT_ERROR2");
END;
RESULT;
END C85009A;