
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Since Oracle 10g, ``++DBMS_UTILITY.FORMAT_ERROR_BACKTRACE++`` is available to get an exception's stack trace, i.e. files and lines that lead up to the exception. When combined with ``++DBMS_UTILITY.FORMAT_ERROR_STACK++``, which contains the exception error code and message, developers are able quickly identify defects.
|
|
|
|
|
|
This rule verifies that whenever either is used in an exception handler, the other is used as well.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,sql]
|
|
----
|
|
BEGIN
|
|
RAISE_APPLICATION_ERROR(-20000, 'This is an error example');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN -- Noncompliant; only FORMAT_ERROR_STACK is used
|
|
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_STACK); -- "ORA-20000: This is an error example"
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
END;
|
|
/
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,sql]
|
|
----
|
|
BEGIN
|
|
RAISE_APPLICATION_ERROR(-20000, 'This is an error example');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_STACK); -- "ORA-20000: This is an error example"
|
|
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); -- "ORA-06512: at line 2"
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
END;
|
|
/
|
|
----
|
|
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Use both "FORMAT_ERROR_STACK" and "FORMAT_ERROR_BACKTRACE" in this exception handler.
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 23 May 2013, 14:05:21 Dinesh Bolkensteyn wrote:
|
|
http://rajeshwaranbtech.blogspot.fr/2010/05/dbmsutilityformaterrorbacktrace-10g-new.html
|
|
|
|
endif::env-github,rspecator-view[]
|