권장 : ASP를 사용하여 웹 사이트를 개발하십시오 일반적으로 대규모 웹 사이트는 아키텍처에 ASP를 사용할 가능성이 낮지 만 ASP는 여전히 중소형 비즈니스 사이트에서 큰 시장 범위를 차지하고 있습니다. ASP는 단순하고 짧은 개발주기와 쉬운 유지 보수로 중소형 사이트 관리자가 선호합니다. 그러나 내가 아는 한
7.4.2 vbscript 오류 처리
vbscript에서 스크립트 통역사는 찾은 오류를 처리하지 못하고 ON ERROR 이력서 다음 문을 사용하여 다음 문장을 계속 실행할 수 있습니다. 이 명령문이 처리되면 스크립트 엔진은 발견 된 오류를 지불하지 않고 후속 프로그램을 계속 실행합니다. 그러나이 프로세스는 진술이 순차적으로 실행되는 환경, 즉 중첩 된 기능이나 서브 루틴이 아닌 환경에만 적용됩니다.
1. ON ERROR 이력서를 사용하십시오. 다음 명령문
서브 루틴에서 오류가 발생하면 ON ERROR 이력서가 실행되지 않으면 오류가 호출되는 환경에 오류가 전달됩니다. 이 프로세스는 ON Error 이력서에서 실행되는 환경이 다음 문을 찾거나 기본 스크립트 오류 핸들러가 발견 될 때까지 반복되며 오류가 ASP로 넘겨지고 IIS가 기본 오류 페이지를 표시합니다.
이 잘못된 통화 체인은 실행 오류가 프로그램이 실행을 중단하지 못하게하는 기능과 서브 루틴을 만들 수 있음을 의미합니다. ON ERROR 이력서 이력서 다음 문자가 서브 루틴의 시작 부분에 배치되면 런타임 오류는 서브 루틴의 실행을 중단하지만 서브 루틴을 호출하는 프로그램은 웹 페이지가 중지되지 않고 계속 실행됩니다.
예를 들어, 파일에 문자열을 작성 해야하는 경우 독립적 인 기능을 통해 파일에 액세스하여 오류가 전체 프로그램 실행을 방해하는 것을 방지 할 수 있습니다.
'strfileName이라는 파일을 만들고 그 이름을 가진 기존 파일을 덮어 씁니다.
'strcontent를 쓰고 파일을 닫습니다.
'성공하면 true를 반환하거나 오류에 대해 거짓을 반환합니다.
함수 writenewfile (strfilename, strcontent)
오류 이력서에 다음 '기본 오류 핸들러 끄기
witenewfile = flase '기본 반환 함수 값
set objfso = createobject (scripting.filesystemobject)
err.number = 0 인 경우 objfile = objfso.createtextfile (strfilename, true)
err.number = 0이면 objfile.writeline strcontent
err.number = 0 인 경우 objfile.close
err.number = 0 인 경우 writenewfile = true
엔드 기능
위의 프로그램은 각 프로그램 명령문을 처리하기 전에 vbscript의 ERR 개체의 번호 속성을 확인합니다. 이 값이 0이면 (아직 오류가 발생하지 않음) 파일의 제출 및 생성 프로세스를 계속할 수 있습니다. 그러나 오류가 발생하면 스크립트 엔진은 ERR 객체의 특성 값을 설정하고 다음 줄을 계속 처리합니다.
오류를 일으키지 않고 정상적으로 실행할 수있는 한 함수의 반환 값이 true로 설정됩니다. 그렇지 않으면 함수가 false를 반환합니다. 프로그래밍 에서이 기능을 사용하고 테스트 한 후 다른 작업을 수행 할 수 있습니다.
다음은 간단한 예입니다. 오류가 발생하는 위치를보다 정확하게 식별 할 수 있도록 작업의 첫 번째 부분에 별도의 기능을 사용하려고합니다. 따라서 디버깅 중에 코드를 더 쉽게 읽을 수 있습니다. 페이지의 주요 프로그램에서는 세 가지 별도의 기능을 호출 할 수 있습니다.
CreateNewFile (strfilename)이면 '새 파일을 만듭니다
응답. 새 파일을 성공적으로 작성하십시오 <br>
WriteContent (strcontent)라면 '내용을 작성하십시오
응답. 파일 <br>에 작성된 컨텐츠를 작성하십시오
또 다른
response.write 오류 : 파일 <br>에 쓰지 못했습니다
끝 If
CloseFile (strfilename)이면
응답. write 파일 닫기 <br>
또 다른
response.write 오류 : 파일을 닫지 못했습니다 <br>
끝 If
또 다른
Response.Write 오류 : 새 파일을 생성하지 못했습니다 <br>
END FUNCIOTN
2. 오류 goto 사용 0
ASP 2.0 (문서는 없음) 및 ASP 3.0에서는 ON ERROR GOTO 0 문을 사용하여 기본 오류 처리 동작도 복원 할 수 있습니다. 이 명령문을 실행 한 후 발생하는 런타임 오류는 기본 오류 처리를 유발하여 메인 페이지 코드까지 환경 체인의 각 중첩 된 프로그램을 확인합니다. 기본 오류 처리를 끄는 다른 환경이 없으면 웹 페이지 실행이 중지되고 IIS 기본 오류 페이지가 표시됩니다.
3. vbscript err 객체
이전 예제에서는 기본 오류 처리가 꺼지면 vbscript err 객체의 번호 속성을 확인하여 오류가 발생했는지 확인하십시오. ERR 개체는 런타임 오류에 대한 정보를 저장합니다. 표 7-3 및 7-4는 vbscript err 객체가 제공하는 방법과 속성을 제공합니다.
표 7-3 vbscript err 객체의 방법
방법
설명
분명한
모든 현재 ERR 객체 설정을 지우십시오
들어올리다
런타임 오류가 발생했습니다
표 7-4 vbscript err 객체의 특성
재산
설명
설명
오류를 설명하는 문자열을 설정하거나 반환합니다
숫자
(기본값) 지정된 오류 값을 설정하거나 반환합니다
원천
오류를 생성 한 객체의 이름을 설정하거나 반환합니다.
이 속성을 사용하여 어떤 오류가 발생하는지 확인하십시오. 예를 들어, 오류 번호에 따라 다른 측정 값을 취하거나 소스 및 설명의 속성 값을 사용자에게 제공하거나 파일로 전송할 수 있습니다.
ERR 개체를 사용하여 오류를 생성 할 수도 있습니다. 왜 이런 일을합니까? 때로는 사용자에게 사용자 정의 오류 메시지를 보내고 싶기 때문입니다. ERR 객체의 속성은 원하는 값으로 설정할 수 있습니다. 그런 다음 Raine 메소드를 호출 하여이 오류를 생성하십시오. 그렇게하면 프로그램이 중지되고 통화 체인을 따라 오류를 다시 전달합니다.
다음 예제는 서버 디스크에서 텍스트 파일을 읽을 때 오류를 처리하는 방법을 보여줍니다. 확인 된 vbobjecterror를 사용하여 선택한 오류 번호가 기존 오류 번호와 혼동되지 않는지 확인하십시오. 이 상수에 선택된 오류 번호를 추가하면 사전 정의 된 오류와 혼동되지 않도록 보장됩니다.
functoin readthisfile (strfilename) '컨텐츠를 문자열로 반환합니다
다음에 오류가 재개됩니다
readThisfile = '기능의 기본 반환 값입니다
set objfso = createobject (scripting.filesystemobject)
set objfile = objfso.opentextfile (strfilename, forreading)
Case Err.Number를 선택하십시오
CASE 0 'OK, 조치를 취하지 마십시오
사례 50, 53 '표준 파일 또는 경로를 찾지 못함 오류
'사용자 지정 오류 값을 만들고 오류를 통화 체인을 백업합니다.
interrnumber = vbobjecterror 1073 '사용자 정의 오류 번호
strerrdescript
공유 : ASP를 사용하여 클라이언트의 실제 IP 주소를 얻는 방법은 무엇입니까? 프록시 서버를 통해 클라이언트의 실제 IP 주소를 얻으려면 request.servariables (http_x_forwarded_for)를 사용하여 읽어야합니다. 그러나 모든 프록시 서버가 request.servariab을 사용할 수있는 것은 아닙니다.