>  기사  >  백엔드 개발  >  .net의 오류 처리 메커니즘은 무엇입니까?

.net의 오류 처리 메커니즘은 무엇입니까?

藏色散人
藏色散人앞으로
2019-04-26 13:35:516980검색

.NET의 오류 처리 메커니즘은 다음과 같습니다. 1. [Page_Error] 이벤트, 2. ErrorPage 속성, 3. [Application_Error] 이벤트, [] 구성 항목. 위의 네 가지 처리 메커니즘은 주로 예외 처리 및 페이지 수준 오류 처리에 사용됩니다.

.net의 오류 처리 메커니즘은 무엇입니까?

.NET은 네 가지 오류 처리 메커니즘을 제공합니다.

1.Page_Error 이벤트

Page_Error 이벤트는 페이지 수준에서 발생하는 오류를 캡처하는 방법을 제공합니다. 간단히 오류 메시지를 표시하거나(아래 샘플 코드 참조) 이벤트를 기록하거나 다른 작업을 수행할 수 있습니다.

private void Page_Load(object sender, System.EventArgs e)
   { // Put user code to initialize the page here
        throw new Exception("Page Error!");
   }
protected void Page_Error(object sender, EventArgs e) 
   {
      Exception objErr = Server.GetLastError().GetBaseException();
    Response.Write("Error:" + objErr.Message);
       Server.ClearError(); //同样要注意这句代码的使用
  }

참고: 이 예는 브라우저에 자세한 오류 메시지를 표시하며 설명용으로만 제공됩니다. 애플리케이션의 최종 사용자에게 자세한 정보를 표시할 때는 주의하세요. 오류가 발생했다는 메시지를 사용자에게 표시한 다음 특정 오류 세부 정보를 기록하는 것이 더 적절합니다.

2. ErrorPage 속성

페이지에서 거의 언제든지 ErrorPage 속성을 설정하여 페이지에 오류가 발생할 때 리디렉션할 페이지를 결정할 수 있습니다. ErrorPage 속성이 작동하려면 930ac17b94b9e98609d20e97126e0d94 구성 항목의 모드 속성이 "On"으로 설정되어야 합니다.

this.ErrorPage = "~/ErrorHandling/PageError.html";

Page_Error와 ErrorPage가 모두 존재하는 경우 Exception이 발생했을 때 페이지 실행 순서는 어떻게 되나요? 페이지는 먼저 Page_Error 이벤트 처리 기능을 실행합니다. Page_Error() 이벤트에서 Server.ClearError() 함수를 호출하여 예외 정보를 지우면 Server.ClearError인 경우 ErrorPage 속성에 지정된 페이지로 이동하지 않습니다. ()가 호출되지 않으면 예외 정보가 계속 위로 던져지고 페이지는 ErrorPage에서 지정한 페이지로 이동합니다. 이는 또한 우선순위 순서(Page_Error 이벤트 > ErrorPage 속성)를 증명합니다.

3.Application_Error 이벤트

Page_Error 이벤트와 유사하게 Application_Error 이벤트를 사용하여 애플리케이션에서 발생하는 오류를 캡처할 수 있습니다. 이벤트는 애플리케이션 전체에서 발생하므로 애플리케이션 오류 정보를 기록하거나 발생할 수 있는 기타 애플리케이션 수준 오류를 처리할 수 있습니다. Global.asax 파일에 다음 코드를 추가하면 문제가 없습니다.

protected void Application_Error(object sender, EventArgs e)
      {
         Exception ex = Server.GetLastError().GetBaseException();
         //实际应用中这里可以将Exception信息记Log或是保存到数据库中
         //还可以将错误发邮件给网站维护人员
          Response.Write("Error:" + ex.Message);
         //清除Exception,避免继续传递给上一级处理
         //这里上级就是<CustomerErrors>配置节了
          Server.ClearError(); 
     }

4.930ac17b94b9e98609d20e97126e0d94 구성 항목

구성 파일 web.config의 930ac17b94b9e98609d20e97126e0d94 구성 섹션에서 리디렉션 페이지를 기본 오류 페이지 defaultRedirect로 지정하거나 HTTP 오류 코드가 발생했습니다. 이 사용자 정의 페이지는 애플리케이션의 이전 레벨에서 발견되지 않은 오류가 발생하는 경우 표시됩니다.

<customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html"> <error statusCode="404" redirect="~/ErrorHandling/404.html" /> </customErrors>

마찬가지로 Application_Error와 57eeb7803b8d23e3b64c46876f20d8de가 동시에 존재하는 경우에도 실행 순서에 문제가 있습니다. 우선순위 Application_Error 이벤트>930ac17b94b9e98609d20e97126e0d94 구성 항목 때문에 애플리케이션 수준 오류가 발생하면 Application_Error 이벤트의 코드가 먼저 실행됩니다. ; 구성 섹션 예외가 지워졌기 때문에 defaultRedirect가 작동하지 않습니다. Application_Error 이벤트에서 Server.ClearError() 함수가 호출되지 않으면 오류 페이지가 defaultRedict에 지정된 URL 페이지로 재배치되어 친숙한 오류 메시지가 표시됩니다. 사용자에게.

위의 .NET에서 제공하는 4가지 오류 처리 메커니즘을 분석함으로써 이를 다양한 관점에서 분류하여 이해와 사용을 용이하게 할 수 있습니다.

1. 기능적으로 분류됨: Page_Error 이벤트와 Application_Error 이벤트는 예외 처리(예외 처리)에 사용되며, ErrorPage 속성과 930ac17b94b9e98609d20e97126e0d94 구성 항목은 사용자 오류 페이지로 리디렉션에 사용됩니다.

2. 오류 처리 범위에 따른 분류: 페이지 수준 오류 처리에는 Page_Error 이벤트와 ErrorPage 속성이 사용되며, 응용 프로그램 수준 오류 처리에는 930ac17b94b9e98609d20e97126e0d94

위 내용은 .net의 오류 처리 메커니즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제