por Deni Marinho

Tratamento de erros no ASP Classic

Para fazer um tratamento de erros no ASP Classic sem recorrer ao famoso "On Error Resume Next", existe uma técnica muito eficiente, porém pouco utilizada por desenvolvedores.

No ASP Classic existe uma sub padrão que é chamada quando ocorre um erro, a sub "OnTransactionAbort". Para esta sub ser chamada, é preciso declarar TRANSACTION="REQUIRED" na primeira linha do código, junto com a sintaxe utilizada.

<%@LANGUAGE="VBSCRIPT" TRANSACTION="REQUIRED"%>

 

No exemplo abaixo eu utilizo o método Server.GetLastError para recuperar o último erro ocorrido no site e montar um texto, que logo depois será enviado por email.

 

<%
Sub OnTransactionAbort()

Dim objErr, sBody
Set objErr=Server.GetLastError()

sBody = "<b>ASPCode: </b>" & objErr.ASPCode & "<br />" & _
"<b>ASPDescription: </b>" & objErr.ASPDescription & "<br />" & _
"<b>Category: </b>" & objErr.Category & "<br />" & _
"<b>Column: </b>" & objErr.Column & "<br />" & _
"<b>Description: </b>" & objErr.Description & "<br />" & _
"<b>File: </b>" & objErr.File & "<br />" & _
"<b>Line: </b>" & objErr.Line & "<br />" & _
"<b>Number: </b>" & objErr.Number & "<br />" & _
"<b>Source: </b>" & objErr.Source & "<br />" & _
"<b>SQL: </b>" & sql

Call sendmail("<" & SITE_EMAIL_POSTMASTER & ">", "[email protected]", "Tratamento de erros", sBody, "", "")

End Sub 
%>

 

Este método pode ficar em qualquer parte, porém, aconselho a colocá-lo em um arquivo comum a todas as páginas por include ou no Global.asa.

P.S. Se você precisar tratar o sucesso em vez do erro, pode usar a sub OnTransactionCommit()

Comentários

Carregando comentários

Postar um novo comentário



Processando...