爱上MVC~业务层刻意抛出异常,全局异常的捕获它并…
2018-06-22 06:15:42来源:未知 阅读 ()
回到目录
对于业务层的程序的致命错误,我们一直的做法就是直接抛出指定的异常,让程序去终断,这种做法是对的,因为如果一个业务出现了致命的阻塞的问题,就没有必要再向上一层一层的返回了,但这时有个问题,直接抛异常,意味着服务器直接500了,前端如何去显示,或者如果你是API的服务,如果为前端返回,如果是500,那直接就挂了,哈哈!
下面是在MVC环境下优化的全局异常捕获代码(非API)
/// <summary> /// 全局异常捕获 /// </summary> public class GlobalExceptionFilterAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext context) { JsonResult response = new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet }; if (context.Exception is ArgumentException) { var exception = (ArgumentException)context.Exception; response.Data = new { statusCode = System.Net.HttpStatusCode.InternalServerError, errorcode = "02", message = exception.Message, }; } else if (context.Exception is Exception) { var exception = (Exception)context.Exception; response.Data = new { statusCode = System.Net.HttpStatusCode.InternalServerError, errorcode = "01", message = exception.Message, }; } else { response.Data = new { statusCode = System.Net.HttpStatusCode.InternalServerError, errorcode = "03", message = "其它异常", }; } context.Result = response; context.ExceptionHandled = true; context.HttpContext.Response.Clear(); context.HttpContext.Response.TrySkipIisCustomErrors = true; } }
如果业务层有问题,直接就throw了
if (id == 0) throw new ArgumentException("id不能为0"); if (id < 0) throw new ArgumentException("id不能是负数");
然后页面后,故意让它抛出异常,我们看一下页面响应的结果
事实上,对于服务器来说,它是200,正常返回的,而对不业务模块来说,它的状态是个500,呵呵,这点要清楚.
感谢各位阅读!
回到目录
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- ASP.NET MVC Admin主页快速构建 2020-03-23
- Asp.Net MVC4通过id更新表单内容的思路详解 2020-03-19
- MVC数据验证详解 2020-03-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash