即使我有一个问题,ASP.NET MVC 3控制器抛出异常?

时间:2011-08-03 12:22:00

标签: c# asp.net-mvc-3 error-handling

在我的ASP.NET MVC 3应用程序中,我有以下代码:

try
{
    return new ProxyResult(new Uri("http://example.org"));
}
catch (WebException)
{
}

然而,当我尝试访问该页面时,我得到一个WebException(404 Not Found)...但是应该捕获WebException。我不明白这怎么可能跳出我的捕获。

2 个答案:

答案 0 :(得分:2)

您放入try块的所有内容都是对ProxyResult的简单构造函数调用,顺便说一下,这不是标准结果=>它可能是定制的东西。结果的实际执行(ExecuteResult)方法的调用可能会引发您期望的异常,并且在控制器操作之外发生。这就是为什么你的控制器动作没有异常的原因。您应该将try / catch放在您编写的此自定义ProxyResult类的ExecuteResult方法中。

答案 1 :(得分:1)

直到返回action方法后才会执行代理结果。你正在做的就是返回一条指令让MVC在它返回后进行处理。

使用HandleError属性处理异常:

http://msdn.microsoft.com/en-us/library/system.web.mvc.handleerrorattribute.aspx