HandleError操作过滤器的OnError hanler是否处理已由try / catch块处理的异常?

时间:2012-12-13 10:59:47

标签: asp.net-mvc-4

我仍然对HandleError属性/操作过滤器处理的错误类型感到困惑。

例如在下面的代码中,假设我已将HandleError过滤器定义为我的MVC 4应用程序的全局操作过滤器。

我在下面的try catch块中捕到的异常是否会转到OnError操作过滤器的HandleError处理程序?

public class SomeController : Controller
{
    public ActionResult SomeAction()
    {
        new SomeBusinessLogicComponentInTheMVCProject().DoSomething();
        return View();
    }
}

public class SomeBusinessLogicComponentInTheMVCProject
{
    public void DoSomething()
    {
        try
        {
        }
        catch (Exception ex)
        {
            // Will the HandleError filter's OnError 
            // handler catch this exception?
        }
        finally
        {
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你的过滤器中的OnError()方法不会得到异常,因为你的catch块已经处理过它,除非在catch中再次抛出异常(或新的异常)。

ErrorHandelingFilter中的OnError或Controller上的OnException方法(SomeController继承者的类)只会处理控制器中操作的未处理异常。