Programming/.NET

페이지 수준에서 예외가 발생하는 경우를 처리하려면 페이지에 OnError메소드를 재정의합니다.

 

protected void Page_Load(object sender, EventArgs e)
{
    throw new Exception("에러발생!!");
}

protected override void OnError(EventArgs e)
{
    System.Exception error = Server.GetLastError();

    Response.Write(error.Message);
    Response.StatusCode = 200;
    Server.ClearError();
    Response.End();
}

 

Server개체의 GetLastError 메소드를 사용하면 이미 발생한 에러 접근할 수 있고 오류를 가로채 임의의 처리를 수행할 수 있습니다.

 

만약 웹애플리케이션 전체에 대한 오류상황을 감지하려면 Global.asax의 Application_Error 메소드안에서 예외처리에 필요한 사항을 처리하면 됩니다.

 

protected void Application_Error(object sender, EventArgs e)
{
    System.Exception error = Server.GetLastError();

    Response.Write(error.Message);
    Response.StatusCode = 200;
    Server.ClearError();
    Response.End();
}

 

사용자가 서버에 특정 요청을 전달하면 서버는 이에 대한 응답을 반환하는데 이때 특정한 상태코드를 HttpResponse 개체를 통해 반환합니다. 아래는 상태코드에 대략적 내용은 아래 표를 참고해 주세요.

 

 200

 정상

 301

 요청한 데이터가 다른 URL로 이동됨

 302

 요청한 페이지가 다른 페이지로 리다이렉트될때 반환됨

 304

 서버 데이터대신 브라우저가 캐시한 데이터를 보여주는 경우

 400

 잘못된 요청이 전달되는 경우

 401

 사용자 인증이 필요한 경우

 403

 사용자 인증실패

 404

 요청한 페이지를 찾을 수 없음

 500

 내부오류

 

상태코드에 따라 별도의 오류페이지를 보여주고 싶다면 Web.config를 다음과 같이 수정합니다.

 

<customErrors mode="On">
  <error statusCode="404" redirect="errorPage.aspx"/>
</customErrors>

 

에러 요소는 처리가 필요한 상태코드에 따라 여러개를 만들 수 있습니다.

'Programming > .NET' 카테고리의 다른 글

[ASP.NET] EntityDataSource  (0) 2016.05.24
[C#] System.IO.Path 클래스  (0) 2016.05.17
[ASP.NET] 예외처리  (0) 2016.05.11
[ASP.NET] 사이트 네비게이션 (sitemap)  (0) 2016.04.19
[ASP.NET] XSLT  (0) 2016.04.05
[ASP.NET] 공급자 모델 - 3  (0) 2016.03.30
0 0