Para cada error, su correspondiente respuesta. ¿Cómo?

Iniciado por ‭lipman, 17 Octubre 2007, 14:05 PM

0 Miembros y 1 Visitante están viendo este tema.

‭lipman

Estoy manejando una aplicación que lanza varios tipos de errores, que no se pueden corregir porque no depende del programa, así que me gustaría que cada vez que tirara un error diferente (por ejemplo el 81) hiciese una cosa

Es decir, algo así como: El programa tira error 81 --> En vez de saltar la molesta ventanita de error 81 por defecto, hago otra cosa, como cerrar el programa.

Saludos

SERBice

#1
checa esto:

Private Sub Form_Load()
    On Error GoTo ErrorPersonalizado 'si ocurre un error salta a ErrorPersonalizado
    Dim a As Integer 'variable
    a = 4 / 0 'a es iguala  4 sobre 0, eso da error, no se peude divivir sober cero.
    MsgBox "termino el subproceso", vbInformation, "" 'terminamos
    Exit Sub 'salimos de la sub (saltamos la parte de ErrorPersonalizado)
ErrorPersonalizado:
    MsgBox "Hubo un error." & vbCrLf & "El error fue: " & Err.Number & " - " & Err.Description, vbCritical, "" 'damos alerta
    Resume Next 'continuamos despeus de la linea que tuvo el error
End Sub


el mensaje o la accion a tomar derivada del error la puedes personalizar, y peudes usar if's apra ver q error es y en cas de ser por ej error 6 (desbordamiento) haces una cosa y sie s error 13 (no coinciden los tipos) haces otra cosa. asi:
if err.number=9 then
.....
elseif err.number=13 then
......
else
......
end if


o puedes ignorar todos los errores, aunqeu esto demuestra que no sabes prgoramar bien  :rolleyes:.... los que usan el sigueinte metodo es porqe no saben como eliminar sus errores entonces "le dicen al prorgama que no importan los errores":

Private Sub Form_Load()
    On Error Resume Next 'si ocurre un error salta a la siguiente linea sin importar
    Dim a As Integer 'variable
    a = 4 / 0 'a es iguala  4 sobre 0, eso da error, no se peude divivir sober cero.
    MsgBox "termino el subproceso", vbInformation, "" 'terminamos
End Sub

‭lipman

Muchas gracias y muy completo  :o

Sin embargo, tengo dudas con el segundo código, ya que hago esto:

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim a As Integer
a = 1 / 0
If Err.Number = 11 Then
MsgBox "error"
End If
End Sub


Y me sale el errorcito número once y lo de división por cero, y no el mensaje de error que quiero que salga.

Saludos y gracias!

SERBice

Cita de: リ プ マ ン en 17 Octubre 2007, 14:56 PM
Muchas gracias y muy completo  :o

Sin embargo, tengo dudas con el segundo código, ya que hago esto:

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim a As Integer
a = 1 / 0
If Err.Number = 11 Then
MsgBox "error"
End If
End Sub


Y me sale el errorcito número once y lo de división por cero, y no el mensaje de error que quiero que salga.

Saludos y gracias!

simlemente porque lo haces mal....

Código (vb) [Seleccionar]
Private Sub Form_Load()
on error goto errpersonalizado
Dim a As Integer
a = 1 / 0
exit sub
errpersonalizado:
If Err.Number = 11 Then
MsgBox "error"
End If
End Sub



la rpoxima vez, mira bien lso ejemplos qeu se te dan ¿vale?