1 / 24
文档名称:

ASP.NET 3.5完全自学手册.pdf

格式:pdf   页数:24页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ASP.NET 3.5完全自学手册.pdf

上传人:经管专家 2012/10/8 文件大小:0 KB

下载得到文件列表

ASP.NET 3.5完全自学手册.pdf

文档介绍

文档介绍:第 7 章异常处理和日志追踪
第 7 章异常处理和日志追踪
在应用程序运行过程中,难免会遇到异常、错误。在开发过程中经常会被一些用户投拆软件出现
故障,或者是一些乱七八糟的错误提示。用户并不都是专家,看到这些莫名其妙的错误往往会认为是
应用程序不稳定因素所致,此时你会振振有词地告知用户:软件出现故障是难免的,微软够强大吧,
Windows系统还不是会蓝屏出错。这样的解释并不是没有道理,任何软件都不可能十全十美,问题在于
开发人员如何处理错误,如何让应用程序能够无缝地从错误中恢复。
应用程序中的异常,如何追踪错误以及解决一些故障问题,讨论结
构化异常处理,日志记录以及当出现错误时,如何将用户页面重定向到一个用户友好的提示页面,本
页面的诊断信息。
应用程序异常处理
错误的产生很多时候是开发人员始料未及的,有的错误可能运行了很久才突然被触发。然而也有
一些错误是由于开发人员的疏漏所造成的,一个简单的例子是被0除。假如在一个具有很多复杂公式的
页面上,要求用户输入有效的数据执行计算,由于
没有很好的验证机制,用户如果一不小心输入了一
个0作为被除数,将跳转到一个错误页面,

当引发错误时,.NET将检查当前页面范围内是
否有任何错误处理器。假如错误产生于一个方法体
内,.NET将检查方法体内是否有一个错误处理器来
处理错误,如果没有任何的错误处理机制,页面处
理将被中断,一个错误页面将被显示出来。这个显
示的错误页面依赖于客户端的位置,如果是本地则
显示详细的错误信息,否则只显示一个通用的消息。
被0除错误
会先检测本地的错误处理器,因此开
发人员可以设计良好的错误处理方式,比如显示一个友好的信息,或者是不显示错误信息而将这些错
误记录到事件日志中,应用程序中的错误。
异常处理基础
语言都支持结构化异常处理,当一个错误引发时,.NET框架其实创建了一个异常对象
用于呈现问题。开发人员可以使用异常处理器来捕捉这个异常对象。假如不使用异常处理器的话,用
户代码将会被中止,将显示一个让用户迷惑的错误处理页面。
为了演示如何使用结构化的异常处理,mError。在
,为该Button添加一个单击事件,代码如下所示。
书山有路勤为径学海无涯苦作舟
145

protected void Button1_Click(object sender, EventArgs e)
{
int x = 5;
int y = 0;
//故意被0除, 产生一个异常
int z = x / y;
}
由于这段代码中没有添加任何的异常处理器,将中断页面的显示,并显示一个如图
。如果使用结构化的异常处理方式,代码将变成这样所示。
protected void Button1_Click(object sender, EventArgs e)
{
int x = 5;
int y = 0;
try
{
//故意被0除, 产生一个异常
int z = x / y;
}
catch (DivideByZeroException ex)
{
= "产生了一个异常, 由异常处理器返回的信息是:" + ;
}
}
在这段代码中,使用try/catch语句定义了一个异常处理器,该异常处理器捕捉一个被0除的异常
DivideByZeroException,当捕捉到这个异常后将会在一个Label控件中显示出错的信息,运行效果如图

异常处理器运行效果
在这个示例中,当产生异常时,将不再被重定向到一个单独的页面,而是在Label控件中
显示出错的信息。示例使用了try/catch语法来捕捉异常,中标准的异常处理方法,在try块中
放置所有可能出现异常的代码,在catch块中捕捉可能出现的异常,并在其代码块中添加对该异常的处
理程序。
Exception类
上一节的示例中,当产生了被零除的错误后,.NET会创建一个名为DivideByZeroException的异常
对象,catch块中将捕获这个异常对象,并执行处理异常的代码块。DivideByZeroException是一个派生
自Exception的对象。Exception对象中包含了很多有用的关于异常的信息,如上面示例中的Message属
性用于获取异常的描述性信息,