2014-07-10 66 views
0
begin 

    begin 

    do something; 

    exception 

    when no_data_found then 
     raise_application_error(-20000,"Message"); 

    end; 

exception 

    when others then 
     raise_application_error(-20000,"Other message"); 

end; 

我的問題是當編譯器捕獲「消息」錯誤時,它也會捕獲「其他消息」錯誤。爲什麼會發生?PL/SQL異常

回答

4

嘗試將它們放在同一個異常塊中。

如果你將when others放在一個單獨的塊中,它將會被提升,因爲......在該塊中沒有already catched例外排除others

從DOC

的WHEN OTHERS子句用於陷阱,還沒有被命名的系統異常處理和命名程序員定義的異常所有剩餘例外。

所以

exception 

    when no_data_found then 
     raise_application_error(-20000,"Message"); 

    when others then 
     raise_application_error(-20000,"Other message"); 

end; 
+0

真棒。謝謝 ! – user3682983