에러처리
<%
On Error Resume Next
Dim arrTest(3)
arrTest(5) = 3 '이 부분에서 런타임 오류 발생
If Err.number <>; 0 Then '오류 발생 시 이 부분 실행
Response.Write "<b3>;" & Err.Source & "<hr noshade>;</h3>;"
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 개체를 받아서 오류 정보를 출력한다.
On Error Resume Next
On Error Resume Next 에러(취소)가 나면 그냥 지나간다.
On Error Resume Next는 ASP가 발견한 모든 오류를 무시하고, 다음 문장을 계속 실행할 수 있도록 하는 명령이다.
한번 이 문장이 실행되면 스크립트 엔진은 어떠한 오류가 발생하더라도 계속해서 코드를 실행한다.
On Error Resum Next는 ASP 페이지 실행 중 발생하는 런타임 오류를 모두 무시하고 문서가 끝날 때까지 ASP를 실행하지만, 그렇다고 모든 오류가 자동으로 해결되는 것은 아니다. 발생된 오류는 내장 ASP 개체인 Err 개체에 담겨 보통 문서의 끝에서 오류 처리 과정을 거친다.