方法一 :web.config配置文件的 system.web 接点下添加,若为On则不会将异常信息反馈到用户,而是友好的跳转到error.htm

<customErrors mode="On" defaultRedirect="error.htm">
      <error statusCode="404" redirect="~/error/notfound"></error>
    </customErrors>

方法二:在  FilterConfig.cs 中有 new HandleErrorAttribute() 这样一句话, 此类为微软默认已经有的异常处理类,但是是注释的,方法而的优先级比方法一高。

方法三:自定义异常处理类

此处需要注意的是,和方法二差别不大,就是实现IExceptionFilter借口中的OnException方法,可以认为做一些在异常后的后续处理。

调用可以通过

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {

filters.Add(new CustomExceptionAttribute(), 1);
            filters.Add(new HandleErrorAttribute(), 2);//数字越小优先级越高。
        }

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

namespace Web

{

public class CustomExceptionAttribute : FilterAttribute, IExceptionFilter

{

public void OnException(ExceptionContext filterContext)

{

if (filterContext.ExceptionHandled == true)

{

HttpException httpExce = filterContext.Exception as HttpException;

if (httpExce.GetHttpCode() != 500)//为什么要特别强调500 因为MVC处理HttpException的时候,如果为500 则会自动将其ExceptionHandled设置为true,那么我们就无法捕获异常

{

return;

}

}

HttpException httpException = filterContext.Exception as HttpException;

if (httpException != null)

{

filterContext.Controller.ViewBag.UrlReferrer = filterContext.HttpContext.Request.UrlReferrer;

if (httpException.GetHttpCode() == 404)

{

filterContext.HttpContext.Response.Redirect("~/home/notfound");

}

else if (httpException.GetHttpCode() == 500)

{

filterContext.HttpContext.Response.Redirect("~/home/internalError");

}

}

//写入日志 记录

filterContext.ExceptionHandled = true;//设置异常已经处理

}

}

}

最新文章

  1. UWP 颜色选择器(ColorPicker) 和 自定义的Flyout(AdvancedFlyout)
  2. list点击项高亮其他默认
  3. 使用Apache2配置多个站点
  4. ural 1115,搜索
  5. 你的java 代码对JIT编译友好吗?
  6. MyBatis学习练习
  7. 膜拜一个神奇的女人——Hedy Lamarr
  8. Python 实现整数线性规划:分枝定界法(Branch and Bound)
  9. jsp4
  10. ionic2引入cordova插件时提示 no provider for * 错误
  11. SQL语句(一)SQL和数据库数据表的创建
  12. Linux使用ntpdate和ntpd进行时间同步
  13. Error running app: Default Activity not found ; 安卓程序运行不了,也不报错。
  14. python06 深浅拷贝原理
  15. Linux应用程序设计之网络基础编程
  16. hadoop安装入门
  17. mysql慢查询日志开启和存储格式
  18. chromium之MessageLoop浅析
  19. 解决&quot;authentication token manipulation error&quot;
  20. cookie的优缺点

热门文章

  1. yum安装时出现:Cannot retrieve metalink for repository: epel. Please verify its path and try again
  2. 3ds max的动画输出
  3. MongoDB csv文件导入导出
  4. 20145206邹京儒《Java程序设计》第4周学习总结
  5. HTML5学习之WebWork多线程处理(八)
  6. 关于Python 获取windows信息收集
  7. Java获取当前时间年月日、时间格式化打印、字符串转日期
  8. 使用Visual Studio Code开发AngularJS应用
  9. HDU 5876 Sparse Graph BFS 最短路
  10. [Windows驱动开发](四)内存管理