Asp.net mvc 手部故障错误

Asp.net mvc 手部故障错误,asp.net-mvc,handleerror,Asp.net Mvc,Handleerror,我有以下行动方法: [HandleFtmsError] public ActionResult PerformanceChart(ChartViewModel chart) { var x = 1; var y = 0; var z = x/y; return Json(""); } 其中,HaneleftmError定义为: public class HandleFtmsErrorAttribut

我有以下行动方法:

    [HandleFtmsError]
    public ActionResult PerformanceChart(ChartViewModel chart)
    {
        var x = 1;
        var y = 0;
        var z = x/y;
        return Json("");
    }
其中,HaneleftmError定义为:

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异常执行,但它不起作用。我所看到的只是在我进行除法的那一行代码中断。我做错什么了吗?

当你说代码中断时,你的意思是它正在中断调试器吗?这可能只是标准的调试器行为,您可以通过“调试”菜单的“异常”进行更改。。。项目如果您再次点击F5,或者在没有调试的情况下运行,您可能会看到预期的行为


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

Hi Jon,我的意思是代码进入调试器。当我点击F5时,我希望在我在RaiseErrorSignal方法中设置的断点处停止。但这并没有发生,所以我认为这表明它不起作用。@DaveDev:不,试着点击F5让它继续运行,或者更改除法为零的异常以不进入调试器,这样MVC就可以在调试器不碍事的情况下处理它。