Does `EXCEPTION WHEN OTHERS THEN RAISE` do something?
oracle, oracle10g, plsql
Solution
yes, that exception does nothing but raise the same error out. also it serves to mask the real line number of the error. i'd remove that if I were you.
eg:
SQL> declare
2 v number;
3 begin
4 select 1 into v from dual;
5 select 'a' into v from dual;
6 exception
7 when others
8 then
9 raise;
10 end;
11 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 9
vs:
SQL> declare
2 v number;
3 begin
4 select 1 into v from dual;
5 select 'a' into v from dual;
6 end;
7 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 5
the line number in the first one is pointing to the raise instead of the real line number. it can make tracking down errors harder.
Problem
Being still a newbie in PL/SQL, I've been copying and pasting around the following trigger: ``` CREATE OR REPLACE TRIGGER FOO_TRG1 BEFORE INSERT ON FOO REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN IF :NEW.FOO_ID IS NULL THEN SELECT FOO_SEQ1.NEXTVAL INTO :NEW.FOO_ID FROM DUAL; END IF; EXCEPTION WHEN OTHERS THEN RAISE; END FOO_TRG1; / ALTER TRIGGER FOO_TRG1 ENABLE; ``` I suspect that the included exception handling code does nothing at all and could simply get removed, since I'll get an error message anyway if something goes wrong. Am I right? (I guess such code is the result of further editing prior code.)