异常过滤器
1.实现了IExceptionFilter接口
2.执行时间
当action方法或action result抛出异常时执行
3.并不是直接实现IExceptionFilter接口
默认实现HandleErrorAttribute类,HandleErrorAttribute类实现了IExceptionFilter接口与FilterAttribute抽象方法
4.异常发生时执行的方法
public virtual void OnException(ExceptionContext filterContext);
//在HandleErrorAttribute类中
//自定义异常过滤器时需重写继承HandleErrorAttribute类后的此方法
5.自定义异常过滤器
public class MyExceptionFilterAttribute:HandleErrorAttribute//实现接口
{
public override void OnException(ExceptionContext filterContext)//重新方法
{
base.OnException(filterContext);
HttpContext.Current.Response.Redirect("/ExceptionController/ExceptionAction"); //跳转到错误提示页面
}
}
6.全局异常过滤器
1.不用添加标签,对全体都起作用
2.在App_Start文件夹下的FilterConfig.cs中注册
3.优先级最低
4.Global.axal文件中需加上
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
示例
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyExceptionFilterAttribute());
//每添加一条全局过滤器,增加一行上一行代码
}
}