2021-01-27 13:42:22 +01:00
|
|
|
Ensure that every possible exception is caught by using a ``++WHEN OTHERS++`` clause.
|
2020-06-30 12:47:33 +02:00
|
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
|
|
|
|
----
|
|
|
|
SET SERVEROUTPUT ON
|
|
|
|
|
|
|
|
DECLARE
|
|
|
|
result PLS_INTEGER;
|
|
|
|
custom_exception EXCEPTION;
|
|
|
|
BEGIN
|
|
|
|
result := 42 / 0; -- "Unexpected" division by 0
|
|
|
|
|
|
|
|
RAISE custom_exception;
|
|
|
|
EXCEPTION -- Non-Compliant
|
|
|
|
WHEN custom_exception THEN
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('custom_exception: ' || DBMS_UTILITY.FORMAT_ERROR_STACK);
|
|
|
|
END;
|
|
|
|
/
|
|
|
|
----
|
|
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
|
|
|
|
----
|
|
|
|
SET SERVEROUTPUT ON
|
|
|
|
|
|
|
|
DECLARE
|
|
|
|
result PLS_INTEGER;
|
|
|
|
custom_exception EXCEPTION;
|
|
|
|
BEGIN
|
|
|
|
result := 42 / 0; -- "Unexpected" division by 0
|
|
|
|
|
|
|
|
RAISE custom_exception;
|
|
|
|
EXCEPTION -- Compliant
|
|
|
|
WHEN custom_exception THEN
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('custom_exception: ' || DBMS_UTILITY.FORMAT_ERROR_STACK);
|
|
|
|
WHEN OTHERS THEN
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('other: ' || DBMS_UTILITY.FORMAT_ERROR_STACK);
|
|
|
|
END;
|
|
|
|
/
|
|
|
|
----
|
|
|
|
|
|
|
|
include::../see.adoc[]
|
2021-06-02 20:44:38 +02:00
|
|
|
|
2021-06-03 09:05:38 +02:00
|
|
|
ifdef::env-github,rspecator-view[]
|
2021-06-02 20:44:38 +02:00
|
|
|
== Comments And Links
|
|
|
|
(visible only on this page)
|
|
|
|
|
|
|
|
include::../comments-and-links.adoc[]
|
2021-06-03 09:05:38 +02:00
|
|
|
endif::env-github,rspecator-view[]
|