Контроллеры ASP.NET MVC 3 выдают исключения, хотя у меня есть подвох? - PullRequest
0 голосов
/ 03 августа 2011

В моем приложении ASP.NET MVC 3 у меня есть следующий код:

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

Однако, когда я пытаюсь получить доступ к странице, я получаю исключение WebException (404 Not Found) ... но исключение WebException должно быть перехвачено. Я не понимаю, как это может выпрыгнуть из моего улова.

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Все, что вы помещаете в блок try, - это простой вызов конструктора для ProxyResult, который, кстати, не является стандартным результатом => это, вероятно, что-то нестандартное.Фактическое выполнение результата (вызов метода ExecuteResult), который потенциально может вызвать исключение, которое вы ожидаете, происходит намного позже и вне действия вашего контроллера.Вот причина, почему не исключение бросить в вашем действии контроллера.Вы должны поместить try / catch в метод ExecuteResult этого пользовательского класса ProxyResult, который вы написали.

1 голос
/ 03 августа 2011

Результат прокси не выполняется до тех пор, пока не будет возвращен метод действия.Все, что вы делаете, это возвращаете инструкцию для MVC для обработки ПОСЛЕ того, как она вернулась.

Используйте атрибут HandleError для обработки исключений:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...