系统日志和异常的处理③
上一节我们讲了如何捕获异常和记录日志,这一节我们讲,没有捕获的或者忘记捕获的异常包括404错误等,我们统一处理这个异常。
这一讲是利用 Application_Error 捕获所有异常,全局的异常处理为了减少代码,统一异常处理,Application_Error位于Global.asax里面,
protected void Application_Error(object sender, EventArgs e)
当一个异常在调用堆栈中没有被处理,也没有被框架代码处理时,我们说这个异常未处理,它将被ASP.NET捕获
它将捕获所有 Application 级别的 UnhandleException 和 HttpException(比如:访问的页面不存在等)
总之,在这里处理的话,那么在页面中的所有 try/catch 处理都可以不要了,但是我们为了记录日志,在BLL层还是要try catch
对此未处理错误的处理方法是显示一个页面,列出该未处理异常的详细情况。
我们通过 Application_Error事件把错误写进对应的文件里面或者数据库中。
/// <summary> /// 全局的异常处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Application_Error(object sender, EventArgs e) { string s = HttpContext.Current.Request.Url.ToString(); HttpServerUtility server = HttpContext.Current.Server; if (server.GetLastError() != null) { Exception lastError = server.GetLastError(); // 此处进行异常记录,可以记录到数据库或文本,也可以使用其他日志记录组件。 ExceptionHander.WriteException(lastError); Application["LastError"] = lastError; int statusCode = HttpContext.Current.Response.StatusCode; string exceptionOperator = "/SysException/Error"; try { if (!String.IsNullOrEmpty(exceptionOperator)) { exceptionOperator = new System.Web.UI.Control().ResolveUrl(exceptionOperator); string url = string.Format("{0}?ErrorUrl={1}", exceptionOperator, server.UrlEncode(s)); string script = String.Format("<script language='javascript' type='text/javascript'>window.top.location='{0}';</script>", url); Response.Write(script); Response.End(); } } catch { } } }
嘿嘿,我创造了一个错误 Convert.ToInt16("dddd");下面是错误的显示页面
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索异常
, string
, 页面
, 错误
, 处理
, 指针ajaxspring mvc异常
, easyui效果事件activateie
, Application_Error
, unhandleexception
, asp.net捕获异常
, easyui常用组件
, Application_Error事件
, 捕获全局异常
未捕获异常
,以便于您获取更多的相关知识。