异常处理技术:
在web应用程序中可以使用两种不同的方法来处理异常:
- 使用异常处理块在过程范围内处理异常。(vs.net文档中成为结构化异常处理)
- 使用出错事件在对象范围内处理异常
查看.net framework提供的异常处理类型:
在Debug菜单中,选择Exceptions。在显示的对话框中列出了所有framework提供的异常
定义新异常:
ApplicationException 类提供了与标准Exception类相同的功能。他提供了一种方式来区分framework中定义的异常和自己定义的异常
1.throw new ApplicationException("User is already logged on");
2.public class UserLoggedOnException : System.ApplicationException
{
public UserLoggedOnException() : this("The user is already logged on to the server",null)
{
}
public UserLoggedOnException(string message) : this(string message) : this(message,null)
{
}
public UserLoggedOnException(string message,Exception inner) : base(message,null)
{
}
}
使用出错事件
使用server对象来获取异常相关信息
Server对象的异常处理事件 | |
GetLastError() | 获取在服务器上发生的最后一个异常 |
ClearError() | 清楚在服务器上发生的最后一个异常 |
在出错事件中处理异常的步骤:
- 在Page_Error,Global_Error或Application_Error事件过程中,使用GetLastError方法获取发生的异常。
- 对该异常进行处理,例如向用户显示信息,采取步骤纠正问题,或写入到出错日志中
- 使用ClearError方法清楚异常
- 重新显示一个页面
e.g.
private void Page_Error(object sender,System.EventArgs e)
{
Exception ex = Server.GetLastError();
Session["Error"] = ex.Message;
Server.ClearError();
Response.Redirect("ErrorEvent.aspx");
}
使用错误页面
应用程序级的错误页面:
- 可以在IIS中设置
- 还可以在web.config中配置出来
e.g.
<customErrors mode="On" defaultRedirect="ErrorDefault.aspx">
<error statusCode="401" redirect="ErrorUnauthorized.aspx" />
<error statusCode="404" redirect="ErrPageNotFound.aspx" />
<error statusCode="500" redirect="ErrServer.htm" />
</customErrors>
页面级应用程序错误:
e.g.
<%@ Page Language="c#" Codebehind="ErrorPage.aspx.cs" AutoEventWireup="flase" Inherites="csErrorPageSnippt.WebForm1" errorPage="ErrorDefault.aspx">
//ErrorDefault.aspx
private void Page_Load(object sender,System.EventArgs e)
{
lb_Error.Text=Server.GetLastError().Message;
Server.ClearError();
}
文章来源:http://spaces.msn.com/members/Grisson/Blog/cns!1pdzVqmOhs8O_w1Y7GbtnyFQ!212.entry