ClassicASP On Error Resume Next 주의!
페이지 정보
본문
On Error Goto 문이 오류 발생시 특정 라벨로 제어를 점프하는 대신에 Resume Next 문은 오류 발생 문(행)의 가장 가까운 다음 실행 부분으로 제어를 옮겨 버리죠.
프로그램 작성시 특정 오류 핸들을 만들지 않고 디버깅을 할 경우에 유용합니다.
on error resume next가 어쩔때는 고맙지만...어쩔때는 엄청난 해악이 될수 있다.
아래의 예문을 한번 보자.
<%
on error resume next
response.Buffer = true
strSql = "select * from members where Id = " '잘못된 SQL 문장이다.
set rs = Conn.Execute( strSql ) '여기서 error 가 납니다.
if not(rs.eof) then
do while not(rs.eof)
response.write "test!!!!" & "<br>"
response.Flush()
rs.MoveNext
Loop
end if
set rs = nothing
response.write "여기가 찍힐까요?"
%>
위의 문장들은 실행하면 어떤한 결과가 나올까요?
결과는
test!!!!
test!!!! 만 죽어라 찍힙니다.
생각과는 달리 Do..Loop문에서 무한 Loop에 빠집니다.
직접 PC 에서 테스트 해보면, CPU 바로 100가 됩니다.
on error resume next만 없었으면 에러나고 끝날 페이지가 무한루프에 빠짐으로써 IIS의 가상메모리를 증가시켜 결국엔 사이트 속도저하를 가져오게됩니다.
페이지에서 on error resume next는 꼭 필요한때가 아니면 쓰지 말아야 할것 입니다.
쓰더라두 error 값을 체크해서 중도에 멈추게 하는것이 필요합니다.
참고자료
http://kr.ks.yahoo.com/service/ques_reply/ques_view.html?dnum=J&qnum=133368
http://moogi.tistory.com/28
댓글목록
등록된 댓글이 없습니다.