MVC异常处理的7大场景 + MVC的异常处理的过滤器 + 全局异常
1.MVC中捕获异常的过滤器属性时[HandleError]
2. 可以扩展这个属性来捕获异常
3.注册这个过滤器
4.Mvc的异常捕获时:Filter + 全局异常捕获
5.异常处理的7大场景
/// <summary>
/// 异常处理在MVC中可以用过滤器属性[HandleError]实现--->利用Aop扩展这个属性
///
/// 自定义异常处理--标记到方法---出现异常惠静如Filter---完成善后处理
///
///
/// 全局注册的异常处理的Filter,7大场景会不会被Filter捕获异常
/// 异常处理的7大场景:
/// 1.Action出现异常,没有catch T
/// 2.Action出现异常,catch了异常 F 异常被Action吃掉了
/// 3.Action调用的底层Service异常 T 异常是冒泡的
/// 4.Action正常,View里面异常 T 试图出现异常,就是View()方法异常
/// 5.控制器构造时,出现异常 F 控制器实例化之后调用过滤器
/// 6.URL地址里面的错误的Action F 因为找不到控制器和Action(IHttpHandler会实例化构造器并且找到对应的方法,之后才会去调用Filter),过滤器是在控制器实例化之后调用的
/// 7.404任务地址异常 F 因为找不到控制器,过滤器是在控制器实例化之后调用的
///
/// MVC的异常处理:Filter+全局异常
/// </summary>
5.1)Controller
public class ThirdController : Controller
{
// GET: Third
public ActionResult Index()
{
return View();
}
//[CustomHandleError]
public ActionResult Info()
{
int i = 0;
int j = 10 / i;
return View();
}
public ActionResult ExceptionCatch()
{
try
{
int i = 0;
int j = 10 / i;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return View();
}
public ActionResult ExceptionService()
{
new UserService().CheckUserState(123);
return View();
}
public ActionResult ExceptionView()
{
new UserService().CheckUserState(123);
return View();
}
}
public class TestController : Controller
{
public TestController()
{
throw new Exception("构造异常");
}
// GET: Test
public ActionResult Index()
{
return View();
}
}
5.2)类库