How to handle -904 Invalid identifier error in oracle store procedure
The way you wrote your procedure, ORA-00904 is a compile time error, you can not catch that with a runtime exception handler.

Simplest workaround is to use dynamic SQL. Instead of:

 insert into test_proc_tbl(un_id) /* this column doesn't exist */
        select 'asd' from dual;


Use this:

execute immediate ' insert into test_proc_tbl(un_id) select ''asd'' from dual';


This will compile regardless of the existence of un_id column, and you can catch the error. However, you will lose dependecy tracking between the table and your procedure.