La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Leonel Morales Díaz Ingeniería Simple

Presentaciones similares


Presentación del tema: "Leonel Morales Díaz Ingeniería Simple"— Transcripción de la presentación:

1 Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com
Manejo de Errores Leonel Morales Díaz Ingeniería Simple Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en:

2 Errores de Léxico Uso de un símbolo no definido
Uso de símbolos que no son del lenguaje Ejemplo: Dima UnStr UnStr -- “Guatemala” For i = * To 40j

3 Errores de Sintáxis Uso de símbolos en lugares inadecuados
Omisión del símbolo correcto Ejemplo: If A < Then A = 38**B Else B = B*4>A If

4 Errores Semánticos Errores en el sentido de la construcción
No tiene sentido Ejemplo: Dim A,B A = “Guatemala” B = A*8

5 Errores Lógicos El programa no corresponde con lo que se quiere hacer
Produce resultados ilógicos Ejemplo: Construír una tabla de 2x2 en cada celda de una de 2x2

6 Errores Lógicos ej074.html Dim i,j
Document.Write "<Table Border=1>" For i = 1 To 2 Document.Write "<TR>" For j = 1 To 2 Document.Write "<TD><Table Border=1>" Do While i < 2 Do While j < 2 Document.Write "<TD> </TD>" j = j + 1 Loop Document.Write "</TR>" i = i + 1 Document.Write "</Table></TD>" Next Document.Write "</Table>" ej074.html

7 Errores de Tiempo de Corrida
Ocurren en condiciones específicas durante la ejecución No fueron previstos al programar Detienen la ejecución del programa Ejemplos: División entre cero Indices fuera de límites en vectores Uso no válido de nulo Cambio de formatos de fecha Abrir un archivo inexistente

8 El Objeto Err Almacena los datos del último error Es un objeto
Tiene propiedades o atributos Tiene comportamiento (métodos) Propiedades: Number, Source, Description Métodos: Clear, Raise

9 ¿De qué sirve el objeto Err?
Si la ejecución se detuvo, ¿cómo se puede consultar la información del error?

10 Flujo en Caso de Errores
Instrucción On Error Si hay un error: Si se usa On Error Resume Next Continúa en la siguiente instrucción Si se usa On Error Goto 0 El programa se detiene Se marca error Si nada se indica Se asume On Error Goto 0

11 ¿Dónde Ocurre Error? Dim i,Arr1(8) Randomize For i = 0 To 8
Arr1(i) = Round(Rnd()*10,0) Next Arr1(i) = Arr1(i) / Arr1(i+1) Document.Write "<Table Border=1><TR>" For i = 0 To 9 Document.Write "<TD>" & Arr1(i) & "</TD>" Document.Write "</TR></Table>"

12 On Error Resume Next Dim i,Arr1(8) Randomize For i = 0 To 8
Arr1(i) = Round(Rnd()*10,0) Next On Error Resume Next Arr1(i) = Arr1(i) / Arr1(i+1) Document.Write "<Table Border=1><TR>" For i = 0 To 9 Document.Write "<TD>" & Arr1(i) & "</TD>" Document.Write "</TR></Table>" Dim i,Arr1(8) Randomize For i = 0 To 8 Arr1(i) = Round(Rnd()*10,0) Next On Error Resume Next Arr1(i) = Arr1(i) / Arr1(i+1) On Error Goto 0 Document.Write "<Table Border=1><TR>" For i = 0 To 9 Document.Write "<TD>" & Arr1(i) & "</TD>" Document.Write "</TR></Table>"

13 Políticas de Error No hacer nada A favor: En contra:
Se atiende el error cuando ocurre A favor: Desarrollo más rápido Código más simple En contra: Hay que “parchar” el código Costos de soporte y mantenimiento

14 Políticas de Error Que ocurra “elegantemente” A favor: En contra:
Mostrar mensaje explicativo del error Guardarlo en una bitácora A favor: Se maneja el error de forma sencilla y estandarizada En contra: Se obliga al usuario a interpretarlo Mucho código “de cajón”

15 Ocurre Elegantemente ej075.html Dim UnNum,Repetir Repetir = True
Do While Repetir UnNum = InputBox("Ingrese un número","Ingreso",0) On Error Resume Next Document.Write "El número ingresado es: " & UnNum & _ " que dividido 8 da: " & (UnNum/8) If Err.Number > 0 Then MsgBox "Ha ocurrido el error:" & VBNewLine & Err.Number & _ VBNewLine & "de descripción:" & VBNewLine & Err.Description & _ VBNewLine & "de origen:" & VBNewLine & Err.Source,VBCritical,"Error" Err.Clear Else Repetir = False End If On Error Goto 0 Loop ej075.html

16 Políticas de Error Que ocurra sin que se note A favor: En contra:
Suprimir los avisos de error Poner un On Error Resume Next al inicio A favor: Permite ejecutar los programas hasta el final En contra: Errores importantes nunca salen a la luz

17 Políticas de Error Cero tolerancia a errores
Prevenir los errores, hacer que no ocurran Eliminar los errores antes de producción Si pueden ocurrir anticiparse Si no pueden anticiparse hacer que: Falle en seguro (fail safe) Degradación aceptable (fail soft) Tolerancia completa (fail operational)

18 Políticas de Error Cero tolerancia a errores A favor: En contra:
Exige planificar la codificación Exige disciplina en la codificación Reduce costos de soporte y mantenimiento En contra: Difícil de implementar

19 Errores de Strings Verificar Cadena vacía No nulo
Longitud cero No nulo Espacios al inicio y al final Espacios en el medio ej076.html ej077.html


Descargar ppt "Leonel Morales Díaz Ingeniería Simple"

Presentaciones similares


Anuncios Google