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.)

Original source