asp.net-mvc – 处理asp.net mvc中的错误和异常
发布时间:2020-12-15 19:32:26 所属栏目:asp.Net 来源:网络整理
导读:在asp.net mvc结构中处理错误和捕获异常的可接受方法是什么? 普遍的共识是让例外起泡. 那么你可以处理什么层(View或Controller)来处理异常(抓住它们/显示用户友好的文本等).我的预感是,它在控制器中完成? 编辑: 我想避免在每个控制器动作中重复相同的错误
在asp.net mvc结构中处理错误和捕获异常的可接受方法是什么?
普遍的共识是让例外起泡. 那么你可以处理什么层(View或Controller)来处理异常(抓住它们/显示用户友好的文本等).我的预感是,它在控制器中完成? 编辑: 我想避免在每个控制器动作中重复相同的错误处理代码.我正在寻找一个简洁的例子,说明如何在不重复相同的代码的情况下实现错误处理. 解决方法
处理控制器中的异常可能会导致大量的重复代码.更好的方法是在扩展HandleErrorAttribute的动作过滤器中处理它们.在那里,您可以记录异常,然后重定向到一个页面,该页面显示一条很好的消息,指示用户发生错误.
但是,在某些情况下,您需要处理控制器方法中的异常,例如,当您可以从异常中恢复并向用户显示适当的消息,例如由业务层抛出的异常,指示值您提供的无效.在这种情况下,您应该捕获特定的异常,并向用户显示相同的视图以及相应的消息. 编辑: public class CustomErrorHandlerAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { var logger = log4net.LogManager.GetLogger("SomeLoggerHere"); logger.Error("An unhandled error occurred",filterContext.Exception); if (filterContext.HttpContext.Request.IsAjaxRequest()) { filterContext.HttpContext.Response.Clear(); filterContext.HttpContext.Response.Status = "500 Internal Server Error"; filterContext.Result = new JsonResult { Data = new { ErrorMessage = filterContext.Exception.Message } }; filterContext.ExceptionHandled = true; } else { base.OnException(filterContext); } } } 编辑2: [CustomErrorHandler] public class AnyController : Controller { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何判断正在查看的网站位置?
- asp.net-mvc-3 – 在ASP.NET MVC3中使用List作为Web Grid中
- asp.net – 如何在SQL4的log4net配置中使用存储过程进行日志
- asp.net – 为每个用户创建专用URL(ASP .net)
- asp.net-mvc – 使用HTML.EditorFor Vs使用HTML.CheckBox
- VS 2015 CTP 6 Nuget Package Source
- asp.net – 在jQuery对话框中的窗体中,MVC中通常采用的方法
- .Net 更容易的使用配置文件 SuperConfig
- asp.net-mvc – 如何获取Azure网站上的错误详细信息
- asp.net – 使用匿名访问在Sharepoint中读取Cookie的问题