簡體   English   中英

異常如何突破try \\ catch塊?

[英]How can exception break through try\catch block?

引用“單元測試的藝術”一書:

在Rhino Mocks中,通過調用StrictMock方法創建嚴格的模擬。 即使您的測試包含全局try-catch子句,也總是會引發意外的方法調用異常,您可能會認為它會捕獲從隔離框架拋出的此類異常。

那么我該如何在自己的程序中實現這種行為呢?

您永遠不應該在應用程序中真正出現這種類型的場景,因為您不應該捕獲全局異常。 您應該只捕獲要處理的異常類型,應該允許其他所有事件冒泡。

一種方法可能是實現攔截框架,例如Unity.Interception (也存在其他攔截框架,例如,來自Castle)。

使用Unity.Interception你可以寫的實現ICallHandler ,它有一個Invoke方法,您可以捕獲並重新拋出異常:

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    var methodReturn = getNext().Invoke(input, getNext);

    // did the method raise an exception?
    if (methodReturn.Exception != null)
    {
        // handle it... re-throw it if necessary...
    }
}

當然,深入研究Rhino.Mocks的源代碼將是最直接的方法。 至少,使用Reflector並瀏覽dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM