码迷,mamicode.com
首页 > Web开发 > 详细

MVC异常处理的7大场景 + MVC的异常处理的过滤器 + 全局异常

时间:2020-02-11 21:56:35      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:sage   except   res   ror   扩展   view   throw   summary   line   

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)类库

技术图片

 

 技术图片

 

 技术图片

 

MVC异常处理的7大场景 + MVC的异常处理的过滤器 + 全局异常

标签:sage   except   res   ror   扩展   view   throw   summary   line   

原文地址:https://www.cnblogs.com/fblogs/p/12296951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!