
When an include is not surrounded by empty lines, its content is inlined on the same line as the adjacent content. That can lead to broken tags and other display issues. This PR fixes all such includes and introduces a validation step that forbids introducing the same problem again.
99 lines
1.7 KiB
Plaintext
99 lines
1.7 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Before trapping all possible exceptions, it is best to try to trap the specific ones and try to recover from those.
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,sql]
|
|
----
|
|
SET SERVEROUTPUT ON
|
|
|
|
CREATE TABLE hitCounter
|
|
(
|
|
page VARCHAR2(42),
|
|
hits NUMBER,
|
|
CONSTRAINT pk PRIMARY KEY (page)
|
|
);
|
|
|
|
CREATE PROCEDURE hitPage(pageIn VARCHAR2) AS
|
|
BEGIN
|
|
INSERT INTO hitCounter VALUES (pageIn, 1);
|
|
EXCEPTION -- Noncompliant, the only exception handler is WHEN OTHERS
|
|
WHEN OTHERS THEN
|
|
IF SQLCODE = -1 THEN
|
|
UPDATE hitCounter SET hits = hits + 1 WHERE page = pageIn;
|
|
ELSE
|
|
DBMS_OUTPUT.PUT_LINE('An unknown error occured!');
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
BEGIN
|
|
hitPage('index.html');
|
|
hitPage('index.html');
|
|
END;
|
|
/
|
|
|
|
SELECT * FROM hitCounter;
|
|
|
|
DROP PROCEDURE hitPage;
|
|
DROP TABLE hitCounter;
|
|
----
|
|
|
|
=== Compliant solution
|
|
|
|
[source,sql]
|
|
----
|
|
SET SERVEROUTPUT ON
|
|
|
|
CREATE TABLE hitCounter
|
|
(
|
|
page VARCHAR2(42),
|
|
hits NUMBER,
|
|
CONSTRAINT pk PRIMARY KEY (page)
|
|
);
|
|
|
|
CREATE PROCEDURE hitPage(pageIn VARCHAR2) AS
|
|
BEGIN
|
|
INSERT INTO hitCounter VALUES (pageIn, 1);
|
|
EXCEPTION
|
|
WHEN DUP_VAL_ON_INDEX THEN
|
|
UPDATE hitCounter SET hits = hits + 1 WHERE page = pageIn;
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT_LINE('An unknown error occured!');
|
|
END;
|
|
/
|
|
|
|
BEGIN
|
|
hitPage('index.html');
|
|
hitPage('index.html');
|
|
END;
|
|
/
|
|
|
|
SELECT * FROM hitCounter;
|
|
|
|
DROP PROCEDURE hitPage;
|
|
DROP TABLE hitCounter;
|
|
----
|
|
|
|
include::../see.adoc[]
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Add exception handlers for the expected exception types.
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|