2014-12-04 64 views
2

我正在編寫一個包含多個過程的PLSQL包,其中任何一個都可以生成我定義的異常,並且我處理了異常每個程序。從而;有沒有辦法在PLSQL包中處理全局定義的異常

package BODY pkg 
    PROCEDURE first 
    BEGIN 
    ..... 
    EXCEPTION 
    WHEN foobar ... 
    END first; 

    PROCEDURE second 
    BEGIN 
    ..... 
    EXCEPTION 
    WHEN foobar ... 
    END second; 
END pkg; 

它的工作原理。

但是,有沒有什麼辦法來定義異常處理程序,它會在包中的ANY過程中引發「foobar」,因此每個過程不需要僅用於處理foobar條件的異常部分?實際的代碼有大約十幾個程序。

+5

不,除非你添加一個「中心」的過程充當每個過程調用的頂部的接收層。 – Sebas 2014-12-04 23:50:18

+0

我希望,但是這比價值更多的工作。謝謝你,Sebas。 – 2014-12-05 04:35:46

+0

無論如何,只要做你正在做的事情可能是好的。什麼是真實世界的場景? – Sebas 2014-12-05 05:15:23

回答

1

我將通用代碼移動到一個單一的常規,例如:

package BODY pkg 

    PROCEDURE foobar_handler IS 
    BEGIN 
    ..... 
    END foobar_handler; 

    PROCEDURE first 
    BEGIN 
    ..... 
    EXCEPTION 
    WHEN foobar THEN foobar_handler; 
    END first; 

    PROCEDURE second 
    BEGIN 
    ..... 
    EXCEPTION 
    WHEN foobar THEN foobar_handler; 
    END second; 
END pkg; 
相關問題