본문 바로가기

C#(ASP.NET)

Error Handling 방법

김영욱님의 블로그(UX엔지니어)에 있는 동영상 강좌를 보고 정리한 내용입니다.


1. try, catch, finally
   catch는 여러개 존재가능하다. 그러므로 catch는 상세한 에러부터 명시하여 처리하며 점점 영역을 넓혀가면서 처리하도록 한다.


2. throw
   특정 상황에서 예외를 임의적으로 발생 시킬 수 있다.
  
   ex) throw(new ArgumentNummExeception());

3. User define exception
   사용자가 정의한 예외도 발생 시켜서 처리 할 수 있다.
   ApplicationException()
   ApplicationException(string message)

   ex) Throw new ApplicationException("0을 입력했습니다.");

    protected void Page_Load(object sender, EventArgs e)
    {
        throw (new ApplicationException("기냥"));
        // 위와 같은 형태로 사용자가 정의한 예외를 발생 시킬 수 있음.
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            int a = 10;
            int b = 0;
            int c = 0;
        
            if (b == 0) {
                throw (new System.DivideByZeroException()); // 임의의 예외 발생
              // throw (new ApplicationException("0을 입력하시면 안돼요."));  // 사용자가 정의한 예외 발생
            }
        
            c = a / b;
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);    // 에러메세지
            Response.Write(ex.ToString());  // 상세에러 정보
        }
        finally
        {
        }
    }


4. Error event handling
위의 3가지는 예상 가능한 에러 처리 방법이였다.
예상하지 못했던 에러 처리는 다음과 같은 방법으로 처리 할 수 있다.

1) Web.config 설정
<customErrors mode="On|Off|RemoteOnly" defaultRedirect="GenericErrorPage.htm">
    <error statusCode="403" redirect="NoAccess.htm" />
    <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

- mode 속성 값

On : 사용자에게 보여질 에러 페이지를 사용 (defaultRedirect속성을 사용할것)
       각 에러상황에 따른 페이지를 설정하여 보여줄 수 있음.
Off : 기본적인 에러메세지 페이지가 보여짐
RemoteOnly : 외부사용자들은 On모드이며 로컬개발자들은 Off모드로 설정됨.
                    그러나 실서버에 배포가 되고나면 개발자들도 로컬 사용자가 아니므로 On모드와 같이 적용된다.

2) IIS에서 "사용자 지정 오류" 탭을 이용한 설정
iis 속성 > "사용자 지정오류" 탭에서 각 에러사항에 대한 페이지를 세팅할 수 있다.
그러나 서버를 재설치하거나 여러대의 서버가 존재할 경우 수작업으로 지정해야 되므로 불편함이 있으며
웹호스팅을 받고 있을 경우등 설정이 불가능한 사항이 될수도 있다.

그러므로 관리면에서 보면 Web.config에 설정하는게 효율적이며 관리도 편리하다.


5. Trace를 이용한 exception log


- Trace를 이용한 표준화의 장점
1. 표준화 : .NET 표준적인 방법으로 표준화시킬 수 있으며 이는 WebForm, WinForm의 구분이 없다.
2. 웹의 지원 : 추적의 결과를 일반적인 웹 브라우저로 모두 접근 가능하다.(XML형식이므로)
3. 구성의 용의 : 단순히 설정변경만으로 추적 기능을 On/Off 할 수 있다.

Web.config 파일에 셋팅
<trace
        enabled="false"
        requestLimit="10"
        pageOutput="true"
        traceMode="SortByTime"
        localOnly="true"
 />

enabled="true" 일 경우 응용프로그램 루트에 추적정보를 trace.axd 파일로 생성한다.
pageOutput을 false로 설정하지 않으면 추적정보가 모두 각 페이지의 화면에 출력된다.

- Trace log에 message 기록방법
1. Trace.Write(string category, string message)
2. Trace.Warm(string category, string message)

Write와 Warm의 차이점은 문자의 색상이 검정과 빨간색으로 나오는 차이뿐임.
ex) Trace.Write("testing", "검정색 추적 기록");




동영상 강좌 원본
[ASP.NET 다시보기 03[4/1]오류검출 및 바로잡기
[ASP.NET 다시보기 03[4/2]오류검출 및 바로잡기
[ASP.NET 다시보기 03[4/3]오류검출 및 바로잡기
[ASP.NET 다시보기 03[4/4]오류검출 및 바로잡기



[출처] 김영욱님의 블로그(UX엔지니어)