2012-02-08 71 views
1

在我的MVC3應用程序中,我有很多控制器和操作。有時執行某個操作時會引發異常。我希望能夠記錄它,並讓MVC處理異常。如何在MVC中調用控制器操作?

事情是這樣的僞代碼:

try { 
    MvcInvokeControllerAction(controller, action, params); 
} catch(Exception e) { 
    trace("Error while invoking " + controller + "-" + 
     action + " with " + params + " details: " + getDetails(e)); 
    throw; 
} 

我要的是能夠趕上異常之前,首先通過MVC處理,因爲有時MVC踢引發了另一個異常,我看後者Application_Error()和原來的例外很多。

我該如何實現這種掛鉤?

回答

1

您可以覆蓋OnException Method在您的Basecontrollor

這將是Controllor操作中所有異常的Catch塊。只是Exetnd所有Controllors從Basecontrollor

protected override void OnException(ExceptionContext filterContext) 
{ 
} 

public class BaseController : Controller 
{ 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 
     // Handle error here 
    } 
} 


public class TestController : BaseController 
{ 
    public ActionResult Index() 
    { 
     // If any exceptions then will be caught by 
     // BaseController OnException method 
    } 
} 
+0

如何讓異常傳播?我只是調用基礎'OnException()'? – sharptooth 2012-02-08 13:24:36

+0

查看示例。無需調用OnException。 MVC會自動調用OnException來控制Controllor操作中的任何錯誤 – swapneel 2012-02-08 13:26:56

相關問題