PL/SQL & SQL CODING GUIDELINE 51 - Never handle unnamed exceptions using the error number

條款五十一,不要使用 Error Number 去處理 Unnamed Exceptions。


像是下面這樣的程式,直接使用 Error Number -2291 去處理 Unnamed Exception 就不是建議的作法。

1
2
3
4
5
6
7
8
9
10
BEGIN 
...
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE = -2291
THEN
...
END IF;
END;


比較好的作法是透過 pragma exception_init 將未命名的內部錯誤做個命名,然後直接用這個命名去攔截對應的錯誤做對應的處理。

1
2
3
4
5
6
7
8
9
10
11
DECLARE 
e_parent_missing EXCEPTION;
PRAGMA EXCEPTION_INIT(e_parent_missing,-2291);
...
BEGIN
...
EXCEPTION
WHEN e_parent_missing
THEN
...
END;