在传统的ASP中,有没有办法在应用程序级别处理错误?

PBe*_*ger 12 error-handling asp-classic

在经典的ASP中,有没有办法在应用程序级别处理错误?

是否有处理传统ASP 3中的错误/异常的指导原则?Server.GetLastError()不是很多...

我正在寻找像Application_Error()ASP.Net Global.asax中找到的东西.

global.asa中的任何等价物?用于智能地记录错误的类?就像ASP3的旧企业库异常处理一样......

嘿,我是一个梦想家!

非常感谢任何指针

Joo*_*ker 12

try:
    some code that can raise an error
except:
    do error handeling stuff
finally:
    clean up, close files etc
Run Code Online (Sandbox Code Playgroud)

可以在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    
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?当新创建的实例超出范围时,将调用'class_terminate'方法.当interperter命中'end with'语句或者callstack由于错误而被解除时,就会发生这种情况.它不像本机python方法那么漂亮,但它运行得很好而且不丑.

对于顶级错误处理,您可以使用相同的技术.这次不使用with语句,而是创建错误处理程序的全局实例.请注意提供的ASPError对象server.getLastError()与vbscript错误对象不同,并且只有在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
Run Code Online (Sandbox Code Playgroud)


Edu*_*eni 6

不幸的是Global.ASA只提供Application_OnStart, Application_OnEnd, Session_OnStart and Session_OnEnd方法.没有错误处理.

您可以获得的最接近的(AFAIK)是使用Custom ErrorsIIS中的功能指向其他文件或URL来处理错误.

自定义错误图像

在我看来,太麻烦了.这是一个缺少的功能,使我迁移一些网站,只是为了安心,知道该网站正常工作没有错误.