下面离别引见这四种毛病处置惩罚机制的用法。
1.Page_Error事宜
Page_Error 事宜供应一种捕捉在页级别涌现的毛病的要领。您可以只是显现毛病信息(正以下面的示例代码所示),也可以纪录事宜或实行某个其他操纵。
private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here throw new Exception("Page Error!"); } protected void Page_Error(object sender, EventArgs e) { Exception objErr = Server.GetLastError().GetBaseException(); Response.Write("Error:" + objErr.Message); Server.ClearError(); //一样要注意这句代码的运用 }
备注:此示例在浏览器中显现细致的毛病信息,供应此示例只是为了举行申明。向运用程序的最终用户显现细致信息肯定要警惕。更恰当的做法是向用户显现一条音讯,告知已发作毛病,然后将详细的毛病细致信息纪录在日记中。
2.ErrorPage属性
你险些可以在页面任何时刻设置ErrorPage属性,从而肯定页面发作毛病的时刻会重定向至哪一个页面。要让ErrorPage属性可以发挥作用,<customErrors>设置项中的mode属性必需设为"On"。
this.ErrorPage = "~/ErrorHandling/PageError.html";
假如Page_Error和ErrorPage都存在,当抛出Exception时,页面实行递次是如何的呢?页面会先实行Page_Error事宜处置惩罚函数,假如Page_Error()事宜中挪用函数Server.ClearError()消灭非常信息,则不会跳转到ErrorPage属性指定页面;假如没有挪用Server.ClearError(),Exception信息会继承向上抛,页面会跳转到ErrorPage指定页面。这也就证明了优先级递次:Page_Error事宜>ErrorPage属性。
3.Application_Error事宜
与Page_Error 事宜相相似,您可运用Application_Error事宜捕捉发作在运用程序中的毛病。由于事宜发作在全部运用程序局限内,因而您可纪录运用程序的毛病信息或处置惩罚其他可能发作的运用程序级别的毛病。在Global.asax文件中增加以下代码就OK了。
protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError().GetBaseException(); //现实运用中这里可以将Exception信息记Log或是保存到数据库中 //还可以将毛病发邮件给网站保护职员 Response.Write("Error:" + ex.Message); //消灭Exception,防止继承传递给上一级处置惩罚 //这里上级就是<CustomerErrors>设置节了 Server.ClearError(); }
4.<customErrors>设置项
设置文件web.config中的<customErrors> 设置节,可将重定向页指定为默许的毛病页defaultRedirect或许依据激发的 HTTP 毛病代码指定特定页。假如发作在运用程序之前的任一级别都未捕捉到的毛病,则显现这个自定义页。
<customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html"> <error statusCode="404" redirect="~/ErrorHandling/404.html" /> </customErrors>
一样,假如Application_Error和<customerErrors>同时存在,也存在实行递次的题目。由于优先级Application_Error事宜> <customErrors>设置项,所以发作运用程序级毛病时,优先实行Application_Error事宜中的代码,假如Application_Error事宜中挪用了Server.ClearError()函数,<customerErrors>设置节中的defaultRedirect不起作用,由于Exception已被消灭;假如Application_Error事宜中没用挪用了Server.ClearError()函数,毛病页会从新定位到defaultRedict指定的URL页面,为用户显现友爱失足信息。
经由过程对.NET供应的以上四种毛病处置惩罚机制的剖析,我们可以把它们从差别的角度分类,便于我们明白和运用。
1.从功能上分类:用于非常处置惩罚(Handling exceptions)是Page_Error事宜和Application_Error事宜;用户毛病页面重定向(Redirecting the user to an error page)的是 ErrorPage属性 和 <customErrors>设置项。
2.从毛病处置惩罚的局限分类:用于页面级(Page level)毛病处置惩罚的是Page_Error事宜 和 ErrorPage属性;用于运用程序级(Application level)毛病处置惩罚的是Application_Error事宜 和 <customErrors>设置项。
以上就是.net的毛病处置惩罚机制是什么?的细致内容,更多请关注ki4网别的相干文章!