RAISE_APPLICATION_ERROR
postup
má třetí parametr, který řídí, zda výjimka nahradí aktuální zásobník výjimek (výchozí chování) nebo jej přidá.
Pokud to tedy předáte TRUE
zobrazí obě zprávy; ve volání z vaší procedury:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
vám dává výstup:
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
Chcete-li zobrazit pouze zprávy a ne další informace o zásobníku, musíte se zásobníkem manipulovat. Tento článek
dotýká se, jak používat format_error_backtrace
získat informace, které vás zajímají, ale bohužel odkaz na BT
balíček je mrtvý. Některé ze stejného důvodu je zahrnuta zde
. V podstatě musíte analyzovat řetězec výjimky do řádků a zobrazit pouze ty, které začínají ORA-20%
, myslím.
Buďte však opatrní, abyste nepřišli o informace, které mohou být skutečně životně důležité. Zejména bych vám doporučil zachytit pouze konkrétní chyby, které hledáte, nikoli OTHERS
- nechte to být, abyste se mohli vypořádat s neočekávanými chybami a neskrývali něco důležitého.