RAISE_APPLICATION_ERROR
procedure
har en tredje parameter, som styrer, om undtagelsen erstatter den aktuelle undtagelsesstak (standardadfærden) eller tilføjer den.
Så hvis du sender det TRUE
det vil vise begge beskeder; i opkaldet fra din procedure:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
giver dig outputtet:
BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2
For kun at vise beskederne og ikke de andre stakoplysninger, skal du manipulere stakken. Denne artikel
kommer ind på, hvordan du bruger format_error_backtrace
kode>
for at udtrække de oplysninger, du er interesseret i, men desværre linket til BT
pakken er død. Noget af det samme er dækket her
. Grundlæggende skal du parse undtagelsesstrengen i linjer og kun vise dem, der starter med ORA-20%
, tror jeg.
Men vær forsigtig med at miste information, der faktisk kan være afgørende. Især vil jeg foreslå, at du kun fanger de specifikke fejl, du leder efter, ikke OTHERS
- lad det være, så du kan håndtere uventede fejl og ikke skjuler noget vigtigt.