Manejo de Errores en Javascript 28 de Marzo de 2007
Excepciones Condiciones excepcionales Una división entre cero Uso inválido de nulo Archivo inexistente Ocurre antes que el error Error es no manejar la condición excepcional
Excepción División por cero Definición de arreglo con subíndice negativo Parámetro incorrecto Error en uso de this Archivo inexistente
Ejemplo Pedir al usuario que ingrese ancho y alto de un arreglo
Estructura try... catch... Si se piensa que ocurrirá una excepción: try { Instrucciones sospechosas } catch (Excepción) { Instrucciones de manejo de la excepción } finally { Instrucciones que se ejecutan en todo caso } Opcional
Primera Aproximación function Procesar() { var Contenido = " "; var ElAlto = parseInt(document.getElementsByName("Alto")(0).value); var ElAncho = parseInt(document.getElementsByName("Ancho")(0).value); try { var Celdas = new Array(ElAlto) } catch (e) { window.alert(e.description); } try { var Celdas = new Array(ElAlto) } catch (e) { window.alert(e.description); } for (var i=0;i<ElAlto;i++) { Contenido += " "; Celdas[i] = new Array(ElAncho); for (var j=0;j<ElAncho;j++) { Celdas[i][j] = " " + (Math.round(Math.random()*100*100)/100) + " "; Contenido += Celdas[i][j]; } Contenido += " "; } Contenido += " "; document.getElementById("EspacioTabla").innerHTML = Contenido; } ej078.html
Observar try { var Celdas = new Array(ElAlto) } try { var Celdas = new Array(ElAlto) } catch (e) { window.alert(e.description); } catch (e) { window.alert(e.description); } for (var i=0;i<ElAlto;i++) { Contenido += " "; Celdas[i] = new Array(ElAncho); for (var j=0;j<ElAncho;j++) {
Segunda Aproximación try puede abarcar varias instrucciones try { try { var Celdas = new Array(ElAlto); for (var i=0;i<ElAlto;i++) { Contenido += " "; Celdas[i] = new Array(ElAncho); for (var j=0;j<ElAncho;j++) { Celdas[i][j] = " " + (Math.round(Math.random()*100*100)/100) + " "; Contenido += Celdas[i][j]; } Contenido += " "; } } catch (e) { window.alert(e.description); } } catch (e) { window.alert(e.description); } ej079.html
Otro Ejemplo Variable no definida try { var x = y; } catch (e) { document.write(ocurrió el error: + e.number + – + e.description + ); } finally { document.write(pero el programa terminó de todos modos.); } ej080.html
Problema ¿Cuál es el error equivalente en VBScript?
Debugging Proceso de eliminación de errores Principalmente errores lógicos Los errores de léxico, sintáxis y semántica suelen ser indicados por el software Los resultados son incoherentes Se presentan situaciones inesperadas Con resultados impredecibles
Debugging - Trazas Traza del programa: Ir mostrando en consola valores de variables Trazar cambios de valores
Debugging – Aserción Mensajes indicativos de control de flujo Dicen por donde va el programa Si pasó por determinadas instrucciones Usualmente con MsgBox
Ejercicio Debuggear los problemas en ej081.html ej082.html Enviar reporte a: