Classic ASP 예외처리 방법 - On Error Resume Next

Classic ASP 예외처리 방법 – On Error Resume Next

프로그램을 개발하다 보면 오류(에러)가 발생할 수 있겠죠. 당연히 완벽한 프로그램은 없습니다. 그럼 Classic ASP에서 오류가 발생 시 예외처리를 하는 방법에 대해서 예제로 한번 알아보겠습니다.

▶ 오류 페이지 (0 으로 나누기)

<% Option Explicit %>
     
<%
   Dim int_1, int_2

   int_1 = 0      ' 받은 변수
   int_2 = 30     ' 받은 변수

   Response.Write int_2 / int_1

   Response.Write "마지막 문장"
%>
오류 페이지 - 0 으로 나누기 예시 화면입니다.


▶ On Error Resume Next 문 추가

1) 예외 처리를 하지 않은 경우

<% Option Explicit %>
     
<%
   ' 에러처리 활성화
   On Error Resume Next

   Dim int_1, int_2

   int_1 = 0      ' 받은 변수
   int_2 = 30     ' 받은 변수

   Response.Write int_2 / int_1

   Response.Write "마지막 문장"
%>
예외 처리를 하지 않은 경우 예시 화면입니다.


2) 예외 처리를 한 경우

<% Option Explicit %>
     
<%
   ' 에러처리 활성화
   On Error Resume Next

   Dim int_1, int_2, int_div

   int_1 = 0      ' 받은 변수
   int_2 = 30     ' 받은 변수

   int_div = int_2 / int_1

   ' 에러가 발생한 경우
   If Err.Number <> 0 Then
      Response.write "에러 : " & Err.Description
      Response.End
   End If

   Response.Write "마지막 문장"
%>
예외 처리를 한 경우 예시 화면입니다.


※ 저는 모든 Classic ASP 페이지에 On Error Resume Next 문은 추가하지는 않습니다. 예외 처리가 발생할 것 같은 페이지 또는 특히 배치 프로그램에서는 On Error Resume Next 문을 추가해서 처리를 합니다.


▶ 활용 예제1) – 클라이언트 스크립트 경고 창

<% Option Explicit %>
     
     <%
        ' 에러처리 활성화
        On Error Resume Next
     
        Dim int_1, int_2, int_div
     
        int_1 = 0      ' 받은 변수
        int_2 = 30     ' 받은 변수
     
        int_div = int_2 / int_1
     
        ' 에러가 발생한 경우
        If Err.Number <> 0 Then
           ' 스크립트 경고창
           Response.write "<script>alert('0 으로 나누기를 했습니다. 확인 바랍니다.')</script>"
           Response.End
        End If
     
        Response.Write "마지막 문장"
     %>
클라이언트 스크립트 경고 창 예시 화면입니다.


▶ 활용 예제2) – 프로시저 활용

<% Option Explicit %>
     
     <%
        ' 에러처리 활성화
        On Error Resume Next
     
        Dim int_1, int_2, int_div_1
        Dim int_3, int_4, int_div_2
     
        int_1 = 0      ' 받은 변수
        int_2 = 30     ' 받은 변수
     
        int_div_1 = int_2 / int_1
     
        ' 에러가 발생한 경우
        If Err.Number <> 0 Then
           Call CheckForError("1", Err.Description)
        End If
     
        int_3 = 0      ' 받은 변수
        int_4 = 50     ' 받은 변수
     
        int_div_2 = int_4 / int_3
     
        ' 에러가 발생한 경우
        If Err.Number <> 0 Then
           Call CheckForError("2", Err.Description)
        End If
        
        Response.Write "마지막 문장"
     
        Sub CheckForError(strFlag, strErrMessage)
     
           ' 배치 프로그램인 경우는 오류내역을 DB에 내역을 넣어둔다.
           ' 로직 ~~~
     
           ' 배치 프로그램인 경우는 오류내역을 로그파일에 저장해 둔다.
           ' 로직 ~~~
           
           Response.End
        End Sub
     %>

관련 이전 게시글


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤