Rules which enforce generally accepted best practices.
Table of Contents
TomKytesDespair
Since: PMD 5.1
Priority: Medium (3)
"WHEN OTHERS THEN NULL" hides all errors - (Re)RAISE an exception or call RAISE_APPLICATION_ERROR
This rule is defined by the following XPath expression:
//ExceptionHandler[QualifiedName/@Image='OTHERS']
[count(Statement)=1]
[Statement/UnlabelledStatement/Expression/PrimaryPrefix/Literal/NullLiteral]
Example(s):
CREATE OR REPLACE PACKAGE BODY update_planned_hrs
IS
PROCEDURE set_new_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER, p_hours IN NUMBER)
IS
BEGIN
UPDATE employee_on_activity ea
SET ea.ea_planned_hours = p_hours
WHERE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20100, 'No such employee or project');
END set_new_planned;
FUNCTION existing_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER) RETURN NUMBER
IS
existing_hours NUMBER(4);
BEGIN
SELECT ea.ea_planned_hours INTO existing_hours
FROM employee_on_activity ea
WHERE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
RETURN (existing_hours);
EXCEPTION
WHEN OTHERS THEN NULL;
END existing_planned;
END update_planned_hrs;
/
Use this rule by referencing it:
<rule ref="category/plsql/bestpractices.xml/TomKytesDespair" />