ASP.NET页面错误处理
作者:网络转载 发布时间:[ 2014/4/22 10:33:50 ] 推荐标签:NET 页面错误
ASP.NET应用可以再代码中利用异常捕获来处理错误(try、catch)但是应用出现的所有错误,都用异常捕获来处理是一种不良的编程习惯。try、catch使用简单,但是过度使用会导致严重的性能损失。如果能检测可能出现不预期情况,应该尽量使用其他方法,而将异常捕获作为后考虑的手段,异常捕获是NET官方提供应用程序处理工具。如果ASP.NET应用程序出现异常,运行时会试图寻找有意捕获它的代码块,异常会在栈中下上遍历,直到抵达当前应用程序的起始层,如果在这期间没有找到合适的处理程序,该异常便成为未处理异常,并使CLR抛出系统异常,用户会看见报黄页,应用程序也会随即终止。
默认的错误页面用户在本地和远程计算机看到的典型错误页面是不一样的。
本地用户会看到相对详细的错误信息,远程用户接收到的信息不会那么详细。主要是出于安全方面考虑。
ASP.NET提供了两级全局拦截点,分别位于页面级和应用程序级,帮助我们以编程的方法处理错误。基于基类Page暴露了Error事件,我们可以在页面中重写它,捕获页面执行期间引发的未处理异常。同样,HttpApplication类中也有Error事件,用于捕获整个应用程序中抛出的异常。
页面级错误处理
protected override void OnError(EventArgs e)
{
Exception ex = Server.GetLastError();
if(ex is NotImplementedException)
Server.Transfer("errorpages/notImplemented.aspx");
else
Server.Transfer("errorpages/apperror.aspx");
Server.ClearError();
}
通过Server对象的GetLastError方法,我们获得被引发的异常。然后传到特定的页面,展示给用户。后一旦异常处理完成,应用调用ClearError清楚错误。
全局错误处理
页面的Error事件处理能够捕获特定页面的错误,如果要使组合应用程序的所有页面共享一套错误处理代码,我们可以在应用程序级创建一段全局错误处理程序,便可捕获所有未处理异常。实现几乎和页面级的错误处理程序一样,只不过处理的是代表整个应用程序的HttpApplication对象中的Error事件,为此,我们需要将global.asax文件添加到程序中,并定义Application_Error方法:
protected override void OnError(EventArgs e)
{
Exception ex = Server.GetLastError();
if(ex is NotImplementedException)
Server.Transfer("errorpages/notImplemented.aspx");
else
Server.Transfer("errorpages/apperror.aspx");
Server.ClearError();
}
错误的页面映射
当未处理异常抵达调用栈末端时,ASP.NET会报黄页,但是我们还可以通过使用应用程序Web.Config文件中的<customErrors>区段,可以对这个功能进行充分的控制。
<configuration>
<system.web>
<customErrors mode="Off">
</customErrors>
</system.web>
</configuration>
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11