TRATAMENTO DE ERROS

USUARIO.EXCLUIDOS 07/06/2007 09:47:51
#220168
Olá gente,

Peguei uma apostila para tentar aprender a usar o Tratamento de erro, não tinha nenhum exemplo, alguém poderia me dar um exemplo bem....mas bem simples mesmo para eu entender o funcionameto?

TODOS OS EXEMPLOS SERÃO BEM VINDOS.....

OBRIGADO A TODOS
USUARIO.EXCLUIDOS 07/06/2007 22:21:55
#220246
Resposta escolhida
Erro embora tenha um nome que possa causar arrepios aos programadores iniciantes (afinal pra que fazer um programa errado?) é algo que tem total justificativa.
Existem situações em que podemos ter um erro não provocado por nossa aplicação, imaginemos que estamos gravando um arquivo de um computador para outro quando alguem de forma desavisada desliga o micro destino.
Neste caso teremos um erro não provocado por nossa aplicação, mas ... que deve ser previsto e fundamentalmente tratado.

Leia um outro tópico interessante sobre o assunto onde expliquei o funcionamento do Objeto Err da linguagem VB.
http://www.vbmania.com.br/vbmania/vbmforum.php?varMethod=Abrir&varID=218919&varPagina=2

Uma Sub Básica com tratamento de erro:

'Neste caso criamos o tratamento de erro por que o servidor de dados pode estar off, a rede não funcionar etc... então assim desviamos o fluxo para abaixo do label trataerro que destroi as variáveis objeto e manda uma msg para o usuário.

Private Function SelecionaParcelaMaxima(NR_NF As Long) As Integer
'Esta linha informa o VB q se houver erro desvia para abaixo de trataErro
On Error GoTo trataErro

Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset

strSQL = "SELECT MAX(parcela) "
strSQL = strSQL & " FROM movimento m "
strSQL = strSQL & " INNER JOIN nota_fiscal n "
strSQL = strSQL & " ON m.id_nf=n.id_nf "
strSQL = strSQL & " AND m.nr_nf=n.nr_nf "
strSQL = strSQL & " WHERE m.nr_nf = " & NR_NF
strSQL = strSQL & " AND status=1"

'Neste momento podemos ter um erro de Servidor ou Rede que se não tratado trava ou fecharia o sistema
RS.Open strSQL, CNN, adOpenForwardOnly, adLockReadOnly

If Not IsNull(RS(0)) Then
SelecionaParcelaMaxima = RS(0)

Else
SelecionaParcelaMaxima = 0

End If

RS.Close
Set RS = Nothing

'Nesta linha encerramos a sub por que tudo ocorreu perfeitamente, não precisamos ir até o tratamento de erro
Exit Function

trataErro:
'Caso houve algum problema no funcionamento somos obrigados a limpar a memória do micro
If RS.state = adStateOpen Then
RS.Close

End If

Set RS = Nothing

'Após isto mandamos uma mensagem para que o usuário saiba que existe um problema, qual foi e se não souber resolver reportar ao desenvolvedor o erro.
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Erro ao selecionar parcela"

End Function


Tópico encerrado , respostas não são mais permitidas