ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • On Error Resume Next와 Err 개체 사용하기
    개발 관련/ASP 2009. 10. 9. 15:59

    On Error Resume Next는 ASP가 발견한 모든 오류를 무시하고, 다음 문장을 계속 실행할 수 있도록 하는 명령이다.

    한번 이 문장이 실행되면 스크립트 엔진은 어떠한 오류가 발생하더라도 계속해서 코드를 실행한다.

     

    On Error Resum Next는 ASP 페이지 실행 중 발생하는 런타임 오류를 모두 무시하고 문서가 끝날 때까지 ASP를 실행하지만, 그렇다고 모든 오류가 자동으로 해결되는 것은 아니다. 발생된 오류는 내장 ASP 개체인 Err 개체에 담겨 보통 문서의 끝에서 오류 처리 과정을 거친다.

     

    ===================================Error.asp===============================

     

     
    <%
    	On Error Resume Next
    	Dim arrTest(3)
    	arrTest(5) = 3              '이 부분에서 런타임 오류 발생
    	If Err.number <> 0 Then     '오류 발생 시 이 부분 실행
    	 Response.Write "" & Err.Source & "
    " Response.Write "오류 번호 : " & Err.number & "
    " Response.Write "내용 : " & Err.Description & "
    " Else Response.Write "오류가 없습니다." End If %>

     

    ======================================================================

     

    예제의 첫 머리에 삽입된 On Error Resum Next로 인해

    Error.asp는 ASp 문서 실행 도중 런타임 오류가 발생하더라도 이를 무시한다.

    arrTest(5) = 3 부분에서 멤버 개수가 4인 arrTest 배열에서 잘못된 참조를 사용하여 런타임 오류가 발생해야 하지만,

    On Error Resume Next로 오류가 무시되고 ASP 문서를 실행한다.

    그러나 발생한 오류는 Err 개체에 저장되어 개발자가 오류를 제어할 수 있다.

     

    ======================================================================

     

    Err 개체의 속성과 메서드

     

    메서드

     

    - Clear : Err 개체의 모든 현재 설정 사항을 삭제한다.

    - Raise : 런타임 오류를 발생시킨다.

     

    속성

     

    - Description : 오류를 설명하는 문자열을 반환(읽기/쓰기)한다. 사용자 정의 오류 발생 시 오류 문자열을 설정한다.

    - Number : 오류 번호를 반환(읽기/쓰기)한다.

    - Source : 오류를 생성한 개체명을 반환한다.

     

    ======================================================================

     

    On Error Resume Next가 적용된 ASP 문서의 끝 부분에서는

    Err.Number 속성을 검사하여 오류 발생 여부를 확인한 후, 오류 발생 시에는 적절한 오류 처리 작업을 수행한다.

    Err.Number 속성은 오류가 없을 경우 0을 반환하고, 오류가 발생하면 발생 사유에 해당하는 오류 번호를 반환한다.

     

    Err 개체는 ASP 2.0에서부터 사용하던 오류 개체인데,

    오류 발생의 자세한 원인을 밝혀내기에는 부족한 점이 많에 ASPError 게체를 사용하는 경우가 많다.

    ASPError 개체는 Server.GetLastError 메서드를 사용하여 ASP 문서에서 발생한 오류를 반환할 때 생성되는 개체다.

     

    ======================================================================

     

    ASPError 개체의 속성

     

    - ASPCode : IIS에 의해 생성된 오류 코드를 반환한다.

    - Number : 표준 COM 오류 코드를 반환한다.

    - Source : 오류가 발생한 소스 코드와 오류의 원인이 된 줄 번호를 반환한다.

    - Category : 오류의 종류가 어떤 것인지 반환한다.

    - File : 오류가 발생한 ASP 파일명을 반환한다.

    - Line : 오류가 발생한 ASP 파일의 소수 줄 번호를 반환한다.

    - Column : 오류가 발생한 ASP 파일의 소스 컬럼 번호를 반환한다.

    - Description : 오류에 대한 짧은 설명을 반환한다.

    - ASPDescription : 발생된 오류가 ASP 오류인 경우 상세한 설명을 반환한다.

     

    ======================================================================

     

    ASP 프로그래밍에서 오류가 발생할 때 출력되는 오류 페이지는 500-100.asp 파일인데,

    이 파일은 Server.GetLastError 메서드를 통해 ASPError 개체를 받아서 오류 정보를 출력한다.

     

    출처 : http://blog.naver.com/funflex

     

     

     

     

     

     

     

     

    ASP - On Error Resume Next (에러예외처리)

    <%
    Dim sErrMsg
    Dim nErrNum
    Dim oRS
    Dim oCon
    Dim sSelectSQL
     
    ...
    ...
    ...
     
    nErrNum = 0
    Err.Number = 0
     
    ' 다음문장은 문법적으로 오류가 있어도 강제적으로 실행이 되기때문에
    '  모든 에러를 다 잡고 나서 사용해야 나중에 버그를 줄일수 있음
    On Error Resume Next
     
    	Set oRS = oCon.Execute(sSelectSQL)
    
    	If Err.Number <> 0 then
    		nErrNum = -1
    		sErrMsg = Err.Description
    	End If
     
    ' 여기까지 에러처리문을 반영
    On Error Goto 0
     
    IF 0 <> nErrNum Then
    	' 예외처리
    	Response.Write  ""
    	Response.End
    End If
    %>
    

     

    Dim sErrMsg

    Dim nErrNum

    Dim oRS

    Dim oCon

    Dim sSelectSQL

     

    ...

    ...

    ...

     

    nErrNum = 0

    Err.Number = 0

     

    ' 다음문장은 문법적으로 오류가 있어도 강제적으로 실행이 되기때문에

      모든 에러를 다 잡고 나서 사용해야 나중에 버그를 줄일수 있음

    On Error Resume Next

     

      Set oRS = oCon.Execute(sSelectSQL)

     

      If Err.Number <> 0 then

         nErrNum = -1

         sErrMsg = Err.Description

      End If

     

    ' 여기까지 에러처리문을 반영

    On Error Goto 0

     

    IF 0 <> nErrNum Then

     ' 예외처리

     Response.Write  "<script language='javascript'>"

     Response.Write "alert('" & sErrMsg & "');"

     Response.Write "</script>"

     Response.End

    End If


     

     

    '개발 관련 > ASP' 카테고리의 다른 글

    GMT 시간 변경 하는 방법  (0) 2014.01.13
    ABCpdf AddImageUrl 할때 엑세스 거부의 원인  (0) 2011.01.20
    SQL Injection 공격 관련 점검툴  (0) 2009.10.09
    ABCupload 삭제문  (0) 2009.10.09
    ABCUpload 세팅  (0) 2009.10.09
Designed by Tistory.