![](/img/trans.png)
[英]How can code in a “try…catch” block throw an unhandled exception?
[英]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.