0

我有以下操作方法:

    [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);
    }
}

我认为 action 方法上的属性会以 DivideByZero 异常执行,但它不起作用。我所看到的只是在我进行除法的那一行的代码中断。难道我做错了什么?

4

1 回答 1

0

当您说“代码中断”时,您的意思是它正在闯入调试器吗?这可能只是标准的调试器行为,您可以通过 Debug 菜单的“Exceptions...”项对其进行更改。如果您再次按 F5 - 或在没有调试的情况下运行 - 您可能会看到您期望的行为。

MVC 并没有阻止抛出异常(这是调试器正在寻找的)——它只是通过注意控制器上的属性并适当地传递信息来处理异常。在调试器闯入的那一刻,它还没有机会这样做。

于 2010-09-24T11:22:19.237 回答