PL/SQL & SQL CODING GUIDELINE 53 - Avoid use of WHEN OTHERS clause in an exception section without any other specific handlers

條款五十三,避免單獨使用 WHEN OTHERS 去處理例外。


像是下面這樣的程式,使用 WHEN OTHERS 搭配 IF 條件式與 SQLCODE 去處理例外,就是不建議的作法。

1
2
3
4
5
6
7
8
9
10
11
12
...
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE = -1
THEN
update_instead (...);
ELSE
err.log;
RAISE;
END IF;
...


如果明確使用例外的名稱去處理例外,可以免去不必要的 IF 判斷,及 SQLCODE 的使用。

1
2
3
4
5
6
7
8
9
10
...
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN
update_instead (...);
WHEN OTHERS
THEN
err.log;
RAISE;
...