2009-10-21 1 views
11

기존 ASP에서는 응용 프로그램 수준에서 오류를 처리 할 수있는 방법이 있습니까?기존 ASP에서는 응용 프로그램 수준에서 오류를 처리 할 수있는 방법이 있습니까?

기존 ASP 3에서 오류/예외를 처리하기위한 지침이 있습니까? Server.GetLastError()가 많이 작동하지 않습니다 ...

나는 Application_Error()과 같은 것을 ASP.Net Global.asax에서 찾을 수 있습니다.

global.asa에 상응하는 항목이 있습니까? 오류를 지능적으로 기록하는 클래스는 무엇입니까? 이전 엔터프라이즈 라이브러리와 마찬가지로 ASP3에 대한 예외 처리 ...

안녕하세요, 저는 꿈꾸는 사람입니다!

감사 어떤 포인터

에 대한 많은
+0

VB6 개체를로드한다고 가정 할 수 있습니까? – ChaosPandion

+0

.net에서 IHttpModule을 만들고 웹 사이트에 오류를 잡기 위해 모듈을 웹 사이트에 연결할 수 있다고 생각 했습니까? –

+0

Global.ASA에서 우려하는 응용 프로그램 수준 활동의 예를 들려 줄 수 있습니까? ON ERROR RESUME NEXT를 제외하고, 나는 많은 것이 있다고 생각하지 않는다. – CLaFarge

답변

10
try: 
    some code that can raise an error 
except: 
    do error handeling stuff 
finally: 
    clean up, close files etc 

가 VBScript로 에뮬레이트 수 있습니다 :이 세계에 법과를 수행하는 방법

class CustomErrorHandler 
    private sub class_terminate 
     if err.number > 0 then 
      do error handeling stuff 
     end if 
     clean up, close files etc 
    end sub 
end class  


with new CustomErrorHandler 
    some code 
    ... 
end with  

케이? 새로 생성 된 인스턴스가 범위를 벗어날 때 'class_terminate'메소드가 호출됩니다. 이는 인터 퍼터가 'end with'문에 도달하거나 오류로 인해 호출 스택이 풀린 경우에 발생합니다. 덜 원시적 인 파이썬 접근 방식이지만 상당히 잘 작동하며 추한 것은 아닙니다.

최상위 레벨 오류 처리의 경우 동일한 기술을 사용할 수 있습니다. 이번에는 with 문을 사용하지 않고 오류 처리기의 전역 인스턴스를 만듭니다. Server.getLastError()가 제공 한 ASPError 객체는 vbscript err 객체와 같지 않으며 IIS가 server.transfer를 500 : 100 오류 처리기로 완료 한 후에 만 ​​사용할 수 있으며 페이지를 다시 수집하여 찌꺼기. 예 핸들러 :

class cDebugger 
    public sub do_debug 
    ' print debug data here 
    end sub 
    public sub class_terminate 
    if server.getlasterror().Number <> 0 then 
     response.clear 
     call do_debug 
    end if 
    end sub 
end class 
+0

모든 요청에 ​​cDebugger 객체를 만드는 것을 의미합니까? –

+0

실제로.oure 앱에는 두 가지 디버깅 클래스가 있습니다. 프로덕션에서는 전자 메일별로 오류 보고서를 보내고 개발 중에는 디버그 로그를 화면에 덤프하는 것을 사용합니다. 개발과 생산 간 전환은 응용 프로그램 개체의 설정을 통해 수행됩니다. –

+0

@JoostMoesker CustomErrorHandler 접근법 (try..catch..finally)을 이해하지만 최고 수준의 오류 처리를위한 cDebugger 접근법을 이해하지 못했습니다. 좀 더 자세한 예를 들어 주시겠습니까? – Oliver

5

불행하게도 Global.asa에 단지 Application_OnStart, Application_OnEnd, Session_OnStart and Session_OnEnd 방법을 제공합니다. 오류 처리가 없습니다.

가장 가까운 것 (AFAIK)은 IIS의 Custom Errors 기능을 사용하여 다른 파일이나 URL을 가리켜 오류를 처리합니다. 제 생각에는

Custom Errors Image

은 너무 많은 문제가있다. 이것은 사이트가 오류없이 작동하고 있음을 안심하고 웹 사이트를 마이그레이션 할 수있는 기능이 없습니다.

3

IIS의 500 오류 페이지를 사용자 지정 오류 처리 .asp 페이지로 매핑합니다. 이 페이지는 Server.GetLastError를 사용하여 마지막 오류를 가져오고 오류, 쿼리 문자열, 서버 변수 등에 대한 세부 정보가 포함 된 전자 메일을 보내 사용자에게 친숙한 메시지를 표시합니다.

+0

.NET 코드에서 500 개의 오류가 리디렉션되지 않도록 ASP 오류에 대해서만 ** ** ** ** 이렇게하는 방법이 있습니까? –

+0

@ JoshuaFrank 나는 500 : 100 오류가 ASP 오류에만 해당한다고 생각한다. – Oliver

관련 문제