在我的ASP.NET MVC 3应用程序中,我有以下代码:
try
{
return new ProxyResult(new Uri("http://example.org"));
}
catch (WebException)
{
}
然而,当我尝试访问该页面时,我得到一个WebException(404 Not Found)...但是应该捕获WebException。我不明白这怎么可能跳出我的捕获。
答案 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