Este objeto representa los errores y tiene sus propiedades, métodos y funciones.
La función Raise genera errores en tiempo de ejecución, su forma general es la siguiente:
Raise(numero as Long, origen as String, descripción as String)
Donde numero es el número del error; origen es opcional e indica el objeto o aplicación que generó el error; descripción es una cadena de caracteres con la descripción acerca del error producido.
Ejemplo 1
Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles:
Control |
Propiedad |
Valor |
TextBox |
Name |
txtNum |
" " |
Text |
0 |
CommandButton |
Name |
cmdError |
ListBox |
Name |
lstAdd |
Escribe el siguiente código en el formulario:
Private Sub cmdError_Click()
If isnumeric(txtNum.Text)=True Then
lstAdd.Additem txtNum.Text
Else:Err.Raise 77,"txtIntro","La expresión no es numérica"
End If
End Sub
La propiedad Number del objeto Err es la propiedad más importante y hace referencia al número del error.
La propiedad Description es una cadena de texto que describe el error producido.
La propiedad Source indica en qué lugar se produjo el error.
La propiedad HelpFile es la ruta de acceso a un archivo de ayuda en el caso de producirse un error.
El método Clear limpia todos los errores, o sea deja Err=0.
Si un error se produce, Visual Basic emite un mensaje con el número y la descripción del error y allí finaliza la ejecución, perdiendo todo el trabajo realizado (si no se ha guardado). Para evitar estas situaciones hay ciertas instrucciones para controlar los errores:
- On Error GoTo etiqueta
- On Error Resume Next
La primer instrucción activa una rutina que comienza en la etiqueta línea. Si se establece en el código lo siguiente:
On Error GoTo Unerror
sentencias
Unerror:
sentencias
Se ejecutarán las sentencias a continuación de Unerror en caso de producirse un error.
La segunda instrucción hace que la ejecución del programa continúe después de la línea que produjo el error. Si se establece en el código lo siguiente:
On Error Resume Next
sentencia1
sentencia2
sentencia3
sentencia4
Si el error sucede en la sentencia 1, se pasará la ejecución a la sentencia2, si se produce un error en la sentencia2 se pasará la ejecución a la sentencia3, y así sucesivamente.
Ejemplo 2
Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles:
Control |
Propiedad |
Valor |
TextBox |
Name |
txtDato |
" " |
Text |
|
Frame |
Caption |
Operaciones |
Option |
Name |
optOper |
" " |
Index |
0, 1, 2 |
" " |
Caption |
División 500/x - variable as Byte - Raíz cuadrada |
CommandButton |
Name |
cmdCerr |
" " |
Caption |
Con control |
CommandButton |
Name |
cmdSerr |
" " |
Caption |
Sin control |
Escribe el siguiente código en la ventana de código del formulario
Private Sub Form_Load()
optOper(0).Value=True
End Sub
Private Sub cmdSerr_Click()
Dim var as Integer
If optProc(0).Value=True Then
txtDato.Text=500/txtDato.Text
Else
If optOper(1).Value=True Then
txtDato.Text=Sqr(txtDato.Text)
Else:var=txtDato.Text
End If
End If
End Sub
Pulse F5 para probar la aplicación. Trata de introducir errores, como la división entre 0, la raíz cuadrada de números negativos y guardar en la variable de tipo Byte valores no aptos.
A continuación una tabla con algunos de los valores de error:
Tabla 11 - Algunos valores de error |
Número |
Descripción |
Motivo |
11 |
División por cero |
|
13 |
No coinciden los tipos |
Asingar un valor de caracteres a una variable numérica |
6 |
Desbordamiento |
Asignar a una variable numérica un valor que no puede almacenar |
5 |
Argumento o llamada a procedimiento no válida |
Utilización de argumentos no válidos |
9 |
Subíndice fuera del intervalo |
Asignar un índice mayor al índice de un array |
53 |
Archivo no encontrado |
Abrir un archivo que no existe |
54 |
Modo de archivo incorrecto |
Ocurre cuando se intenta utilizar un método de lectura o escritura incompatible con el método open utilizado |
55 |
El archivo ya está abierto |
Se intenta abrir un archivo ya abierto |
3170 |
No se encontró el ISAM instalable |
Intenta acceder a una base de datos sin el ISAM instalable
|