elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Pequeña duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pequeña duda  (Leído 1,061 veces)
amtapias

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Pequeña duda
« en: 14 Marzo 2006, 16:10 pm »

Wenas. Mi pregunta es la siguiente. ¿Como puedo hacer para que cuando se produzca un error en el programa vuelva a cargar el programa desde el principio y se ignore el error?

Muchas gracias


En línea

.Slasher-K.

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: Pequeña duda
« Respuesta #1 en: 14 Marzo 2006, 16:41 pm »

Hay varios Controladores de Error en VB, siempre hablando de errores internos del programa.

On Error Resume Next

Este controlador es muy útil para manipular errores no controlados, porque en el caso que haya un error pasa a la siguiente instrucción, por ejemplo:

Código:
Function Div(Dividendo As Double, Divisor As Double)As Double
  On Error Resume Next

  Div = Dividendo / Divisor
End Function

Si por ejemplo, se le pasa como divisor 0, ese código produciría el error "11, División por cero", pero al poner ese controlador de error lo que haría el código es pasar directamente a Exit Function.

Las contras de esto es que en muchos casos el programa producirá errores y no devolverá el valor esperado, por lo que el error se arrastrará y no funcionará como se espera. Por eso, al usar On Error Resume Next, es necesario saber qué errores se pueden llegar a producir y controlarlos, en el caso anterior sería así:

Código:
Function Div(Dividendo As Double, Divisor As Double)As Double
  On Error Resume Next

  Div = Dividendo / Divisor

  If Err.Number <> 0 Then
    Call MsgBox("[ Error ] " & Err.Description
  End If
End Function

El objeto Err se utiliza para obtener información del último error en el contexto actual, en el caso que se produzca un error la propiedad Number tendrá el nº de error, de lo contrario sería 0, por lo que se comprueba que haya un error y en el caso que se de esta situación, muestra un mensaje.


On Error Goto Label

En este caso lo que hace este controlador de errores es ir a una etiqueta dentro del mismo procedimiento, en el caso que se produzca un error:

Código:
Function Div(Dividendo As Double, Divisor As Double)As Double
  On Error Resume ErrDiv

  Div = Dividendo / Divisor

ErrDiv:
  If Err.Number <> 0 Then
    Call MsgBox("[ Error ] " & Err.Description
  End If
End Function

En este caso el programa saltaría a ErrDiv.

También existe On Error Goto 0 para eliminar el controlador de errores anterior, pero no se usa casi.


En línea

amtapias

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Pequeña duda
« Respuesta #2 en: 14 Marzo 2006, 19:01 pm »

Muchas Gracias pero mi duda era si hay alguna manera de recargar el programa desde 0. Que tenga el mismo efecto que cerrarlo y volver a ejecutarlo cuando se produzca un error.

Muchas Gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines