Проблема с HandleError
У меня есть следующий метод действий:
[HandleFtmsError]
public ActionResult PerformanceChart(ChartViewModel chart)
{
var x = 1;
var y = 0;
var z = x/y;
return Json("");
}
где HaneleFtmsError
определяется как:
public class HandleFtmsErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
if (context.ExceptionHandled)
RaiseErrorSignal(context.Exception);
}
private static void RaiseErrorSignal(Exception e)
{
var context = HttpContext.Current;
ErrorSignal.FromContext(context).Raise(e, context);
}
}
Я думал, что атрибут метода действия был бы выполнен с исключением DivideByZero, но он не работает. Все, что я вижу, это разрывы кода на линии, где я делаю разделение. Я делаю что-то неправильно?
1 ответ
Когда вы говорите "код ломается", вы имеете в виду, что он ломается в отладчик? Вероятно, это просто стандартное поведение отладчика, которое можно изменить с помощью пункта "Исключения..." в меню отладки. Если вы нажмете F5 снова - или запустите без отладки - вы можете увидеть поведение, которое вы ожидаете.
MVC не предотвращает выдачу исключения (что и ищет отладчик) - оно просто обрабатывает исключение, замечая атрибут на контроллере и передавая информацию соответствующим образом. В тот момент, когда отладчик вмешивается, у него еще не было возможности сделать это.