在mvc4中捕获未处理的异常

时间:2014-06-24 06:54:14

标签: c# asp.net-mvc asp.net-mvc-4

如何在mvc4中捕获unhandeld异常,[不使用ELMAH]。 我尝试了调用Application_Error,它可以工作,但记录所有错误,包括未找到的脚本和未找到的图像路径,这是不需要的。

可以排除的错误示例

  

未找到路径'/Image/*.png'的控制器或未实现IController

     

路径'/〜/ Script / *。js'的控制器未找到或未实现IController

代码

void Application_Error(object sender, EventArgs e) 
{
   Exception exc = Server.GetLastError();
   //logging Exception (exc)
 }

2 个答案:

答案 0 :(得分:0)

创建自定义错误处理程序并捕获您想要的内容(并记录下来)并忽略您不想要的内容。

CustomHandleErrorAttribute

public class CustomHandleErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        if (!(filterContext.Exception is InvalidOperationException))
        {
            // log
        }
    }
}

一个FilterConfig

您需要全局注册错误处理程序。

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new CustomHandleErrorAttribute());
    }
}

答案 1 :(得分:0)

这些错误是未处理的异常。我认为您可以获取此错误类型并忽略它以进行日志记录

  protected void Application_Error()
    {

        var ex = Server.GetLastError();

        if(check exceptiontype)
        {}

}