On Error Resume Next 문을 처음 알았을때 좋기도 했지만 대형 프로젝트 할때는 잘 못 사용하면 에러 찾는데 더 많이 시간을 허비하는 양날의 검이다.
그래서 필자는 On Error 처리문을 전혀 사용하지 않았다... 지금까지는....
그런데, 몇일 전부터 사이트가 이상하게 에러가 발생을 한 것이다....
응답 개체 오류 'ASP 0156 : 80004005'
헤더 오류
/Lib/Function.asp, 줄 3
클라이언트 브라우저에 HTTP 헤더가 이미 쓰여 있습니다. HTTP 헤더는 페이지 콘텐츠를 쓰기 전에 수정해야 합니다.
소스 수정한 거라고는 폼안의 html 코드 위치 바꾼것이 전부인데 갑자기 에러가 나니 일단 임시 조치로 해당 코드를 주석 처리해서 막고 어떻게 해야 할까 고민하다가 에러처리를 해보자고 생각하고 검색을 해봤다..
에러 무시하고 지나가는 코드...
On Error Resume Next
근데 이 코드의 문제는 몇천라인의 코드가 있는 본문에 아무생각 없이 써버리면 나중에 다른 에러가 났을때 정말 개고생을 한다...
그런 고생했던 옛 기억 때문에 원하는 영역만 에러 무시하고 다시 에러나면 멈추게 하는 코드가 있는지 무한 검색을 해봤지만.... 찾을수가 없었다.
그래서 생각해낸 방법이 메서드로 만들어서 사용해 보면 어떨까?
내가 생각했던 저 코드에만 적용이 가능 할까?
그랬더니 잘 작동했다...
원하는 코드만 에러가 발생해도 지나가게 처리 하는 방법을 찾은 것이다...
<%@ CodePage=949 Language="VBScript"%>
<%
Call CharSet_Setting()
Function CharSet_Setting()
On Error Resume Next
Response.CharSet = "euc-kr"
Session.CodePage = 949
Err.Clear
End Function
이렇게 혹시 모를 에러에 대하여 보안 조치가 되었다.
Function.asp 파일은 include 파일이 많이 있긴 했지만, 2번 이상 불러오지 않았다...
다만, 내용 중간에 서브파일을 불러올일이 생겨서 include 로 불러오지 않고
Server.Execute("")
코드로 불러온게 있었는데 이 파일은 상속이 되질 않아서 Function.asp 파일을 불러와서 그런건지...
하여튼 On Error 처리문을 잘만 활용하면 유용하게 쓸수 있을것 같다...
하지만, 그래도 되도록이면 On Error Resume Next 문은 최소화 해야 해야 나중에 편하게 버그를 잡을수 있을듯 싶다.
에러 무시 코드를 많이 써서 프로그래밍 하긴 쉽지만 심각한 에러가 발견 됐는데 어디서 나는지 모른다면...
정말 끔찍하다.(대형 프로젝트 기준)
참고 사이트
#ASP #VBA #에러처리
본 블로그의 글은 공공정보와 개인적 생각의 글 임을 알려드립니다.
또한 오류가 있는 부분이 있으면 댓글로 알려주시기 바랍니다.
감사합니다.
'프로그램' 카테고리의 다른 글
[활용팁] 자바스크립트 선택(Select)박스 다루기(값변경, 확인, 서브속성) (0) | 2021.06.04 |
---|---|
[활용팁] 자바스크립트 구조체(Object) 변수 만들기, 참조 변수 활용하기 (0) | 2021.05.23 |
[활용팁] 자바스크립트 윈도우 창높이(Web Browser) 확인 방법 (0) | 2021.05.21 |
[MySQL] You can't specify target table '테이블명' for update in FROM clause (0) | 2021.03.17 |
실시간 파일 백업 및 파일 삭제 FBM(File Backup Manager V2.1.1) 프로그램 공개 (0) | 2020.04.26 |
댓글