首页 > Linux操作系统 > Linux操作系统 > ASP.NET异常处理
异常捕获,是我们在Coding过程中必须要考虑的。除了使用Try Catch语句之外,更积极的策略是,对于由输入可能引发的异常在输入时就进行验证。
ASP.NET开发中,可以把异常分成几个层次:过程级别/页面级别或类级别/应用程序级别。我们通常会在过程级别就采取措施来捕获异常并处理,以避免
异常向上扩散。过程级别的异常是会向上冒泡至页面级别,页面级别的异常也会冒泡至应用程序级别。
在ASP.NET的架构中,对于页面级别的异常和应用程序级别的异常都提供了捕获机制。
public void Page_Error(object sender,EventArgs e)
{
Exception bjErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Page_Error event
protected void Application_Error(object sender, EventArgs e)
{
Exception bjErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Application_Error event\n" +
"Error in:" + Request.Url.ToString() +
"\nError Message:"+ objErr.Message.ToString() +
"\nStack Trace:"+ objErr.StackTrace.ToString();
EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
Server.ClearError();
//additional actions...
}
注意:Server.ClearError()的作用是把异常从当前层次中销毁,避免继续上向扩散。
如果在页面级别和应用程序级别,异常还是没有被捕获。最终将引发应用程序错误,这时ASP.NET运行时会采取最后一个步骤来使得程序
异常能以尽可能友好的方式通知客户端使用者,那就是检查Web.config中
导向所配置的错误页。
注意:mode属性有三个可选值:
On:未被处理的异常将用户重定向到指定的 defaultRedirect 页。此模式主要用于生产。
Off:用户收到异常信息而不是被重定向到 defaultRedirect 页。此模式主要用于开发。
RemoteOnly:只有在本地计算机上访问该站点的用户(通过使用 localhost)才能收到异常信息。所有其他用户都被重定向到 defaultRedirect 页。此模式主要用于调试。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-631506/ ,如需转载,请注明出处,否则将追究法律责任。