|
Postada em 28/09/2012 12:37 hs
No VB, devemos efetuar o tratamento de erro em cada evento, claro, que se torna impossível. Tenho tido algumas dores de cabeça com isto, e cheguei a efetuar este tratamento para pelo menos aliviar isto. Evitamos em cada evento, trazer o MsGbox, etc. Mas coloco aqui, e peço a alguma colega que tenha algo melhor que compartilhe, ou então vamos melhorar isto ai.
No evento coloque Private Sub EVENTO() ' QUALQUER EVENTO On Error GoTo erro ' aqui vai o código do evento Exit Sub
erro: Call pegaERRO(Err.Number, Err.Description, Err.Source) End Sub
Agora a Função:
Public Function pegaERRO(Numero As Long, Descricao As String, Gerado As String) As String pegaERRO = "Erro Número: " & Str(Numero) & vbNewLine & _ "Descrição do erro: " & Descricao & vbNewLine & _ "Gerado por: " & Gerado Screen.MousePointer = 0 Beep smeN = MsgBox(pegaERRO, vbCritical + vbOKOnly, "Mensagem") Exit Function End Function
Agora amigos, vamos melhorar isto.
vlu//
|
|
|
|
Treze
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 28/09/2012 13:40 hs
Ramos não tem muito o que se melhorar, eu faço praticamente da mesma maneira, mas gero um arquivo .txt com o código tipo e a linha em que ocooreu, logico tem também data hora, nome do form, etc.
a diferença é que numero as linhas para identificar onde o erro ocorreu em tempo de execução.
|
|
|
|
Postada em 28/09/2012 18:24 hs
Treze é isto ai, já melhorou pra mim a sua dica.
vlu//
|
|
|
|
Postada em 01/10/2012 20:38 hs
Treze, beleza amigo, coloquei a linha (Erl), e estou gerado um log, com tudo, ficou ótimo, obrigado. vlu//
|
|
|
Tekki
|
UBERLÂNDIA MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/10/2012 00:39 hs
LCRamos, veja mais um exemplo.
Private Sub cmdLocalizar_Click() On Error GoTo TrataErro 'Para gerenciar o erro, se ocorrer erro ele vai para o TrataErro ... Exit Sub TrataErro: If fcMensagemErro(Err.Number, Err.Description, Err.Source, Me.Caption, Screen.ActiveControl.Name) = True Then Unload Me Else Resume Next End If End Sub
Option Explicit Function fcMensagemErro(lErr As Long, sDescricao As String, sFunction As String) As Boolean
' 0 Zero é o valor padrão deo Err.Number ' De 0001 a 1000 Pre-Definidos pelo BasicScript -- 3129, 3146, 3148, 3276 também são erros padrões ' De 4000 a 4999 VBCritical - VBOkOnly ' De 5000 a 5999 VBQuetion - VBYesNo ' De 6000 a 6999 VBExclamation - VBOkOnly ' De 7000 a 7999 VBInformation - VBOkOnly (menos 7001) ' 9998 para não gerar mensagem de erro, Retorna True ' 9999 para não gerar mensagem de erro, Retorna False ' 7001 VBInformation - VBOkOnly Trata casos duplicados On Error GoTo TrataErro
If lErr <> 0 Then Select Case lErr Case Is < 4000 'BasicScript MsgBox "ERRO" & vbCrLf & vbCrLf & _ "Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Número...: " & lErr & vbCrLf & _ "Function/Sub.: " & sFunction, vbCritical + vbOKOnly
Case Is = 4000 'Critical MsgBox "ERRO" & vbCrLf & vbCrLf & _ "Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Número...: " & lErr & vbCrLf & _ "Function/Sub.: " & sFunction, vbCritical + vbOKOnly
Case Is = 5000 'Question If MsgBox("Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Function/Sub.: " & sFunction, vbQuestion + vbYesNo) = vbYes Then fcMensagemErro = True End If
Case Is = 6000 'Exclamation MsgBox "INFORMATIVO" & vbCrLf & vbCrLf & _ "Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Número...: " & lErr & vbCrLf & _ "Function/Sub.: " & sFunction, vbExclamation + vbOKOnly
Case Is = 7000, 7001 'Information MsgBox "INFORMATIVO" & vbCrLf & vbCrLf & _ "Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Número...: " & lErr & vbCrLf & _ "Function/Sub.: " & sFunction, vbInformation + vbOKOnly
Case Is = 9998 'Não gerar mensagem de erro e retrona True fcMensagemErro = True
Case Is = 9999 'Não gerar mensagem de erro e retrona False
Case Else 'OTHES MsgBox "ERRO" & vbCrLf & vbCrLf & _ "Descrição: " & sDescricao & vbCrLf & vbCrLf & _ "Número...: " & lErr & vbCrLf & _ "Function/Sub.: " & sFunction, vbCritical + vbOKOnly
End Select Err.Clear End If
Exit Function TrataErro: MsgBox "ERRO" & vbCrLf & vbCrLf & _ "Número...: " & Err.Number & vbCrLf & _ "Descrição: " & Err.Description & vbCrLf & _ "Function/Sub.: " & "fcMensagemErro", vbCritical + vbOKOnly End Function
|
|
|
LCRamos
|
GOIANIA GO - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 08/10/2012 09:24 hs
Tekki, muito bom, peguei o exemplo, este é completo, agora vou acrescentar os números de erros gerados pelo PostgreSQL. Obrigado.
vlu//
|
|
|
|