📜  ASP.NET-错误处理

📅  最后修改于: 2020-11-21 05:53:47             🧑  作者: Mango


ASP.NET中的错误处理包括三个方面:

  • 跟踪-在页面级别或应用程序级别跟踪程序执行。

  • 错误处理-在页面级别或应用程序级别处理标准错误或自定义错误。

  • 调试-逐步执行程序,设置断点以分析代码

在本章中,我们将讨论跟踪和错误处理,在本章中,我们将讨论调试。

要理解这些概念,请创建以下示例应用程序。它具有标签控件,下拉列表和链接。下拉列表将加载著名报价的数组列表,并且所选报价显示在下面的标签中。它还具有一个超链接,该超链接指向不存在的链接。


         Tracing, debugging and error handling
      
   
   
   
      






Link to:

文件后面的代码:

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      if (!IsPostBack)
      {
         string[,] quotes = 
         {
            {"Imagination is more important than Knowledge.", "Albert Einsten"},
            {"Assume a virtue, if you have it not" "Shakespeare"},
            {"A man cannot be comfortable without his own approval", "Mark Twain"},
            {"Beware the young doctor and the old barber", "Benjamin Franklin"},
            {"Whatever begun in anger ends in shame", "Benjamin Franklin"}
         };
         
         for (int i=0; i

追踪

要启用页面级跟踪,您需要修改Page指令并添加Trace属性,如下所示:

现在,当您执行文件时,您将获得跟踪信息:

跟踪信息

它在顶部提供以下信息:

  • 会话ID
  • 状态码
  • 请求时间
  • 请求类型
  • 请求和响应编码

每次请求页面时,服务器发送的状态代码都会显示错误的名称和时间(如果有)。下表显示了常见的HTTP状态代码:

Number Description
Informational (100 – 199)
100 Continue
101 Switching protocols
Successful (200 – 299)
200 OK
204 No content
Redirection (300 – 399)
301 Moved permanently
305 Use proxy
307 Temporary redirect
Client Errors (400 – 499)
400 Bad request
402 Payment required
404 Not found
408 Request timeout
417 Expectation failed
Server Errors (500 – 599)
500 Internal server error
503 Service unavailable
505 HTTP version not supported

在顶级信息下,有“跟踪日志”,该日志提供页面生命周期的详细信息。它提供自页面初始化以来经过的时间(以秒为单位)。

跟踪信息2

下一部分是控件树,该树以分层方式列出页面上的所有控件:

跟踪信息3

会话和应用程序状态摘要,cookie和标头集合中的最后一个,其后是所有服务器变量的列表。

跟踪对象允许您将自定义信息添加到跟踪输出。它有两种方法可以实现此目的:Write方法和Warn方法。

更改Page_Load事件处理程序以检查Write方法:

protected void Page_Load(object sender, EventArgs e)
{
   Trace.Write("Page Load");
   
   if (!IsPostBack)
   {
      Trace.Write("Not Post Back, Page Load");
      string[,] quotes = 
      .......................
   }
}

运行观察效果:

跟踪信息4

为了检查Warn方法,让我们在选定的索引更改事件处理程序中强制输入一些错误代码:

try
{
   int a = 0;
   int b = 9 / a;
}catch (Exception e)
{
   Trace.Warn("UserAction", "processing 9/a", e);
}

Try-Catch是一种C#编程结构。 try块包含任何可能会或可能不会产生错误的代码,并且catch块会捕获该错误。程序运行时,它将在跟踪日志中发送警告。

跟踪信息5

应用程序级别跟踪适用于网站中的所有页面。通过将以下代码行放入web.config文件中来实现此功能:


   

错误处理

尽管ASP.NET可以检测到所有运行时错误,但是仍然可能存在一些细微的错误。通过跟踪观察错误是给开发人员的,而不是给用户的。

因此,要拦截这种情况,您可以在应用程序的web.config文件中添加错误处理设置。它是应用程序范围的错误处理。例如,您可以在web.config文件中添加以下行:


   
   
      
         
         
      
      
   

部分具有可能的属性:

  • 模式:启用或禁用自定义错误页面。它具有三个可能的值:

    • :显示自定义页面。
    • :显示ASP.NET错误页面(黄色页面)
    • remoteOnly :向客户端显示自定义错误,在本地显示ASP.NET错误。
  • defaultRedirect :包含未处理错误时要显示的页面的URL。

要为不同类型的错误放置不同的自定义错误页面,请使用子标记,其中根据错误的状态代码指定了不同的错误页面。

为了实现页面级错误处理,可以修改Page指令:

由于ASP.NET调试本身就是一个重要主题,因此我们将在下一章中单独讨论它。