Shopping Hospedagem Fórum Contato
     
   O portal do desenvolvedor ASP Florianópolis-SC, Sábado - 18 de Novembro de 2017  
Busca

Menu do site
Efetuar Login
Usuário:

Senha:

 Esqueceu a senha?
Login automático

 Cadastre-se
Criar uma página ASP de tratamento de erro personalizada
Avaliações: 8   -   Minha nota: Média Geral: 13  

Este artigo descreve como usar o tratamento de erro para verificar especificamente a divisão por zero e lançar um erro genérico para qualquer outro erro encontrado. A página de exemplo exibe duas caixas de texto HTML, postagens que voltam para a mesma página, e as multiplica ou divide com base no botão clicado. Por exemplo, se o usuário digitar 3 e 0 e clicar em Dividir, será usada uma página de tratamento de erro personalizada para exibir uma mensagem personalizada relacionada. Se ocorrer qualquer outro problema, por exemplo, se o usuário digitar letras em ordem alfabética, você poderá simplesmente exibir o número e a descrição do erro, mas a página não apresentará falhas e o usuário poderá tentar novamente.

Criar a página de exemplo
No menu Iniciar, aponte para Programas, aponte para Acessórios e clique em Bloco de notas.


No Bloco de notas, crie uma nova página ASP chamada ErrorHandle.asp.


Copie e cole o seguinte código no Bloco de notas:


<%@ Language=VBScript %>
<HTML>
<HEAD>
</HEAD>
<BODY>

<%

'On Error Resume Next

If Request.Form("sbmtMultiply")<>"" then 'Se Multiplicar for clicado
Value=Cint(Request.Form("txtA"))*Cint(Request.Form("txtB"))
End If
If Request.Form("sbmtDivide")<>"" then 'Se Dividir for clicado
Value=Cint(Request.Form("txtA"))/Cint(Request.Form("txtB"))
End If
If Err.number<>0 then
If Err.number=11 then '11 é o número que ocorre para a divisão por zero.
Response.Write "Esta é uma mensagem personalizada. Não é possível dividir por zero."
Response.Write "Digite um valor diferente na segunda caixa de texto!<p>"
else
Response.Write "Erro na página!<BR>"
Response.Write "O número do erro é: " & Err.number & "<BR>"
Response.Write "A descrição fornecida é: " & Err.Description & "<BR>"
End If
End If
%>

<FORM action="" method=POST name=f1>
A:<INPUT type="text" name=txtA size=5> <BR>B:<INPUT type="text" name=txtB size=5><BR>
<INPUT type="submit" value="Multiply: A x B" name=sbmtMultiply>
<INPUT type="submit" value="Divide: A/B" name=sbmtDivide>
<BR>Resultado: <INPUT type="text" name=txtResult value="<%=Value%>">
</FORM>

</BODY>
</HTML>

Salve ErrorHandle.asp no diretório local do servidor Web (por exemplo, C:\Inetpub\Wwwroot).


Inicie o navegador da Web (por exemplo, no menu Iniciar, aponte para Programas e clique em Internet Explorer).


No navegador da Web, digite o seguinte endereço na barra de endereço e pressione a tecla ENTER:

   http://localhost/ErrorHandle.asp

Teste sem tratamento de erro
Digite valores que funcionem (por exemplo, 2,2 ou 5,5) e clique nos botões. Deve ocorrer o resultado apropriado.


Digite 0 e 0. Isso deverá apresentar falhas com uma mensagem ASP. Lembre-se de que não é possível tentar novamente. Em vez disso, é necessário atualizar a página ou navegar por ela novamente.


Atualize a página. Digite e ou outro caractere na caixa. A página irá falhar e retornará um erro de ASP. Será necessário atualizar a página para tentar novamente.


Teste com tratamento de erro
No Bloco de notas, abra ErrorHandle.asp.


Localize a seguinte linha comentada:


'On Error Resume Next
Exclua o comentário dessa linha (exclua o apóstrofo) da seguinte maneira:


On Error Resume Next

Salve o arquivo ErrorHandle.asp.


Talvez seja necessário fechar a janela do navegador e reiniciar o navegador da Web para limpar o cache. Como alternativa, pressione a tecla F5 para atualizar a página.


Digite valores que funcionem (por exemplo, 2,2 ou 5,5) e clique nos botões. Deve ocorrer o resultado apropriado.


Digite 0 e 0. Isso deverá apresentar falhas com uma mensagem personalizada. Lembre-se de que o código de tratamento de erro personalizado trata o erro. Além disso, lembre-se de que você ainda pode acessar o formulário e tentar novamente.


Digite e ou outro caractere na caixa. Neste caso, o número e a descrição de erro do problema aparecem, mas a página não apresenta falhas e você pode tentar novamente.


Compreendendo o código
A linha "On Error Resume Next" informa à página para continuar o processamento mesmo que seja encontrado um erro. Essa linha registra o problema no objeto Err, mas continua o processamento do resto do código. Se essa linha não estiver presente (como no primeiro teste), a página irá parar o processamento imediatamente e exibirá uma página de erro com o problema específico que foi detectado.


A próxima seção do código determina qual botão é clicado e fornece à variável "Value" o produto (valor multiplicado) ou o quociente (valor dividido) apropriados:


If Request.Form("sbmtMultiply")<>"" then 'Se você clicar em Multiplicar
   Value=Cint(Request.Form("txtA"))*Cint(Request.Form("txtB"))
End If
If Request.Form("sbmtDivide")<>"" then 'Se você clicar em Dividir
  Value=Cint(Request.Form("txtA"))/Cint(Request.Form("txtB"))
End If

A última seção do código verifica os valores no objeto Err para determinar como tratar o erro encontrado. Esta é a parte importante. Se o valor Err.number for zero, nenhum erro foi detectado e o código interno não será processado. Se Err.number não for zero ("If Err.Number<>0"), o código determinará qual erro ocorreu e o tratará de acordo. Nesse caso, o código de exemplo determina apenas se é uma divisão por zero. O valor Err.number para a divisão por zero é 11, portanto, o código verifica esse valor da seguinte maneira:

If Err.number=11
Nesse caso, o código apenas exibe uma mensagem. É possível também chamar uma função ou redirecionar aqui.

Como você está no meio do loop, a seção "else" controla qualquer erro além da divisão por zero. Nesse caso, o código usa as propriedades "Description" e "number" do objeto Err na mensagem.


If Err.number<>0 then
If Err.number=11 then '11 é o número que ocorre para a divisão por zero.
'Executar qualquer código aqui. Nesse caso, exibir uma mensagem personalizada.
'Outra opção seria redirecionar para outra página, como em
'Response.Redirect("divbyzero.asp")
Response.Write "Esta é uma mensagem personalizada. Não é possível dividir por zero."
Response.Write "Digite um valor diferente na segunda caixa de texto!<p>"
else
Response.Write "Erro na página!<BR>"
Response.Write "O número do erro é: " & Err.number & "<BR>"
Response.Write "A descrição fornecida é: " & Err.Description & "<BR>"
End If
End If

Dicas e armadilhas

Para encontrar o número e a descrição de um problema específico a ser tratado, provoque o problema em uma página que use "On Error Resume Next" e o seguinte código:


Response.Write "O número do erro é: " & Err.number & "<BR>"
Response.Write "A descrição fornecida é: " & Err.Description & "<BR>"
Este código não pode detectar os erros de desempenho ou "deslocamentos".


A coleção Err somente mantém registro do erro mais recente. Por exemplo, observe o seguinte código:
X=Cint("x") Y=(3/0) Response.Write Err.Description
Ele fornece a mensagem de divisão por zero e não o tipo de problema de incompatibilidade.






SuperASP do Brasil Ltda

03.066.522/0001-84
Av. Rio Branco 433 - Centro - Florianopolis - SC
Contato

© 2001/2008 - Superasp do Brasil Ltda. Todos os direitos reservados