欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

asp.net mvc3 异常处理

程序员文章站 2022-06-11 23:44:43
...

在项目中异常处理非常重要,我们在mvc中有人说用application_error事件中处理异常处理 ,但是application_error产生的所所有异常,假如要生成日志的话肯定日志文件会很大,而且要想在程序中application_error能执行必须将默认的HandleErrorAttribute属性注册去除掉,否则将不会执行application_error

第一种做法:

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            //RegisterGlobalFilters(GlobalFilters.Filters);//取消注册以执行application_error事件
            RegisterRoutes(RouteTable.Routes);
        }

 

protected void Application_Error()
        {
            //异常处理
        }

第二种做法:

application_start事件中注册一个异常处理

首先添加一个ExceptionText类,其继承自HandleErrorAttribute(表示一个特性,该特性用于处理由操作方法引发的异常),然后重写HandleErrorAttribute的OnException(在发生异常时调用)方法

 public class ExceptionText : HandleErrorAttribute
    {
        /// <summary>
        /// 触发异常时调用的方法
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnException(ExceptionContext filterContext)
        {

            //处理异常
        }
    }

 然后在Global.asax里的RegisterGlobalFilters(默认有)注册一个ExceptionText

  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new ExceptionText());//注册
            filters.Add(new HandleErrorAttribute());
        }

 在Application_Start中调用

  protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);//调用
            RegisterRoutes(RouteTable.Routes);
        }

转载于:https://www.cnblogs.com/objectboy/archive/2013/05/03/3057859.html