Tratar erros em sentenças SQL executadas em ASP

Veremos um pequeno workshop que poderá servir para fazer nossas aplicações ASP mais completas e compactas. Trata-se de evitar um erro bastante freqüente na programação de páginas, que ocorre quando se tenta executar uma sentença SQL mal formada. Nestes casos, o servidor nos informa do erro, embora sempre ofereça informação que não serve muito para o visitante, inclusive pode lhe confundir. Seria preferível que nós tratássemos o erro e informássemos por nossa conta ao usuário, de uma maneira agradável e clara.

Para isso, vamos realizar um tratamento de erros em ASP, que evitará que a página se detenha diante de um erro e nos permita fazer coisas se isto ocorrer.

On error Resume Next
conn.execute(ssql)
if Err<>0 then
‘ realizo acoes para tratar o erro
end if

Com a primeira linha estamos dizendo a ASP que se ocorrer um erro não ser informado dele, e sim, que continue. Na segunda linha executamos uma sentença SQL.

No seguinte bloco se avalia a variável de sistema “Err”, que armazena um possível erro. Se a variável vae qualquer coisa diferente de 0, então é porque ocorreu um erro. Portanto, no caso positivo do if poderemos realizar qualquer tipo de ação para tratar o erro.

Tratar o erro de uma maneira simples

Para tratar o erro de uma maneira fácil de implementar, dentro do if poderíamos chamar a uma função que se encarregasse de fazer todas as ações frente a um erro.

Essa função poderia receber o erro e introduzi-lo em um log de erros. Poderia também informar por correio ao administrador e obviamente, mostrar uma mensagem de erro claro ao visitante.

sub tratar_erro_ssql(ssql,meuerro)

‘trato o possivel erro
‘coloco a sentenca errada em um arquivo de texto

‘criamos o textstream do arquivo
arquivo= request.serverVariables(“APPL_PHYSICAL_PATH”) & “erroslog.txt”
set confile = createObject(“scripting.filesystemobject”)
set fich = confile.OpenTextFile (arquivo,8)
‘escrevo no arquivo
fich.WriteLine(ssql)
fich.WriteLine(Err.Description)
fich.WriteLine(“—————————–“)

‘fechamos o arquivo
file.close()

‘vou informar ao administrador
set obj_mail = server.createObject(“Persits.MailSender”)
assunto_mensagem = “Erro SQL na página”
email_origem_mensagem = “correio@dominio.com”
texto_origem_mensagem = “Empresa”
txt_mail = “Detectamos um erro. Consulte o log de erros para encontrar descrição.”
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & ssql
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & meuerro

obj_mail.host = “smtp.dominio.com”
obj_mail.from = email_origem_mensagem
obj_mail.FromName = texto_origem_mensagem
obj_mail.Subject = assunto_mensagem
obj_mail.AddAddress email_alertas
obj_mail.body = txt_mail
‘o envio
obj_mail.send

‘vou informar ao usuario
response.write “Sentimos muito, mas sua ação não pode ser realizada. Entre em contato com os administradores para obter ajuda.”

end sub

Esta função faz tudo o que foi comentado para tratar do erro. Primeiro escreve o log de erros em um arquivo de texto, logo envia um correio eletrônico ao administrador e finaliza mostrando um erro ao usuário. A função está toda comentada para que se entenda melhor tudo o que foi realizado (como enviar o e-mail através de ASP ou abrir o arquivo de texto) que já foi visto em outros workshops de ASP.

Deixe um comentário