Are you using WHEN OTHERS -> NULL to hide your PLSQL errors?
Don’t be so sure…
WHEN OTHERS exception handlers that do nothing and don’t raise errors using RAISE or RAISE_APPLICATION_ERROR can often hide code failures that result in hard to identify bugs.
To avoid this, a new PL/SQL compiler warning was added in 11g to identify those kind of situations. Check example below:
SQL> ALTER SESSION SET plsql_warnings = 'enable:all'; Session altered. SQL> CREATE OR REPLACE PROCEDURE warning_test AS 2 BEGIN 3 RAISE_APPLICATION_ERROR(-20000, 'This is an Exception!'); 4 EXCEPTION 5 WHEN OTHERS THEN 6 NULL; 7 END; 8 / SP2-0804: Procedure created with compilation warnings SQL> SHOW ERRORS Errors for PROCEDURE OTHERS_TEST: LINE/COL ERROR -------- ----------------------------------------------------------------- 5/8 PLW-06009: procedure "WARNING_TEST" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR
Nice, right?!
There are also some other warnings improvements like:
- New NO_DATA_NEEDED Predefined Exception: ORA-06548: For parallel access and pipelined table functions the caller of a pipelined function does not need more rows to be produced by the pipelined function.
Warnings:
- Severe
– 5018 – omitted optional AUTHID clause
– 5018 – omitted optional AUTHID clause
– 5019 – deprecated language element
– 5020 – parameter name must be identified - Informative
– 6016 – native code generation turned off (size/time)
– 6017 – operation will raise an exception
– 6018 – an infinity or NaN value computed or used
Cheers!