Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clase19

399 views

Published on

Manejo de errores como excepciones en Javascript. Concepto de excepción. Estructura Try - Catch. Equivalencia de errores entre VBScript y Javascript. Depuración o debugging. Uso de trazas para depuración. Uso de aserciones para depuración. Ejercicio.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Clase19

  1. 1. Manejo de Errores en Javascript Leonel Morales Díaz Ingeniería Simple [email_address] Disponible en: http://www.ingenieriasimple.com/introprogra Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados
  2. 2. Excepciones <ul><li>Condiciones excepcionales </li></ul><ul><ul><li>Una división entre cero </li></ul></ul><ul><ul><li>Uso inválido de nulo </li></ul></ul><ul><ul><li>Archivo inexistente </li></ul></ul><ul><ul><li>Ocurre antes que el error </li></ul></ul><ul><ul><li>Error es no manejar la condición excepcional </li></ul></ul>
  3. 3. Excepción <ul><li>División por cero </li></ul><ul><li>Definición de arreglo con subíndice negativo </li></ul><ul><li>Parámetro incorrecto </li></ul><ul><li>Error en uso de “this“ </li></ul><ul><li>Archivo inexistente </li></ul>
  4. 4. Ejemplo <ul><li>Pedir al usuario que ingrese ancho y alto de un arreglo </li></ul>
  5. 5. Estructura try ... catch ... <ul><li>Si se piensa que ocurrirá una excepción: </li></ul><ul><ul><li>try { Instrucciones sospechosas } </li></ul></ul><ul><ul><li>catch ( Excepción ) { Instrucciones de manejo de la excepción } </li></ul></ul><ul><ul><li>finally { Instrucciones que se ejecutan en todo caso } </li></ul></ul><ul><ul><ul><li>Opcional </li></ul></ul></ul>
  6. 6. Primera Aproximación <ul><li>function Procesar() { </li></ul><ul><li>var Contenido = &quot;<Table Border=1 BackGround='&quot; + document.getElementsByName(&quot;Imagen&quot;)(0).value + &quot;'>&quot;; </li></ul><ul><li>var ElAlto = parseInt(document.getElementsByName(&quot;Alto&quot;)(0).value); </li></ul><ul><li>var ElAncho = parseInt(document.getElementsByName(&quot;Ancho&quot;)(0).value); </li></ul><ul><li>try { var Celdas = new Array(ElAlto) } catch (e) { window.alert(e.description); } </li></ul><ul><li>for (var i=0;i<ElAlto;i++) { </li></ul><ul><li>Contenido += &quot;<TR>&quot;; </li></ul><ul><li>Celdas[i] = new Array(ElAncho); </li></ul><ul><li>for (var j=0;j<ElAncho;j++) { </li></ul><ul><li>Celdas[i][j] = &quot;<TD Align=Right>&quot; + (Math.round(Math.random()*100*100)/100) + &quot;</TD>&quot;; </li></ul><ul><li>Contenido += Celdas[i][j]; </li></ul><ul><li>} </li></ul><ul><li>Contenido += &quot;</TR>&quot;; </li></ul><ul><li>} </li></ul><ul><li>Contenido += &quot;</Table>&quot;; </li></ul><ul><li>document.getElementById(&quot;EspacioTabla&quot;).innerHTML = Contenido; </li></ul><ul><li>} </li></ul>ej078.html
  7. 7. Observar <ul><li>try { var Celdas = new Array(ElAlto) } </li></ul><ul><li>catch (e) { window.alert(e.description); } </li></ul><ul><li>for (var i=0;i<ElAlto;i++) { </li></ul><ul><li>Contenido += &quot;<TR>&quot;; </li></ul><ul><li> Celdas[i] = new Array(ElAncho); </li></ul><ul><li> for (var j=0;j<ElAncho;j++) { </li></ul>
  8. 8. Segunda Aproximación <ul><li>try puede abarcar varias instrucciones </li></ul><ul><li>try { </li></ul><ul><li>var Celdas = new Array(ElAlto); </li></ul><ul><li>for (var i=0;i<ElAlto;i++) { </li></ul><ul><li>Contenido += &quot;<TR>&quot;; </li></ul><ul><li>Celdas[i] = new Array(ElAncho); </li></ul><ul><li>for (var j=0;j<ElAncho;j++) { </li></ul><ul><li>Celdas[i][j] = &quot;<TD Align=Right>&quot; + (Math.round(Math.random()*100*100)/100) + &quot;</TD>&quot;; </li></ul><ul><li>Contenido += Celdas[i][j]; </li></ul><ul><li>} </li></ul><ul><li>Contenido += &quot;</TR>&quot;; </li></ul><ul><li>} </li></ul><ul><li>} catch (e) { window.alert(e.description); } </li></ul>ej079.html
  9. 9. Otro Ejemplo <ul><li>Variable no definida </li></ul><ul><li><HTML> </li></ul><ul><li><Body> </li></ul><ul><li><Script Language=“javascript”> </li></ul><ul><li>try { </li></ul><ul><li>var x = y; </li></ul><ul><li>} catch (e) { </li></ul><ul><li>document.write(“ocurrió el error: “ + e.number + “ – “ + </li></ul><ul><li>e.description + “<BR>”); </li></ul><ul><li>} finally { </li></ul><ul><li>document.write(“pero el programa terminó de todos modos.”); </li></ul><ul><li>} </li></ul><ul><li></Script> </li></ul><ul><li></Body> </li></ul><ul><li></HTML> </li></ul>ej080.html
  10. 10. Problema ¿Cuál es el error equivalente en VBScript?
  11. 11. Debugging <ul><li>Proceso de eliminación de errores </li></ul><ul><li>Principalmente errores lógicos </li></ul><ul><ul><li>Los errores de léxico, sintáxis y semántica suelen ser indicados por el software </li></ul></ul><ul><li>Los resultados son incoherentes </li></ul><ul><li>Se presentan situaciones inesperadas </li></ul><ul><ul><li>Con resultados impredecibles </li></ul></ul>
  12. 13. Debugging - Trazas <ul><li>Traza del programa: </li></ul><ul><ul><li>Ir mostrando en consola valores de variables </li></ul></ul><ul><ul><li>Trazar cambios de valores </li></ul></ul>
  13. 14. Debugging – Aserción <ul><li>Mensajes indicativos de control de flujo </li></ul><ul><li>Dicen por donde va el programa </li></ul><ul><ul><li>Si pasó por determinadas instrucciones </li></ul></ul><ul><li>Usualmente con MsgBox </li></ul>
  14. 15. Ejercicio <ul><li>“ Debuggear” los problemas en </li></ul><ul><li>ej081.html </li></ul><ul><li>ej082.html </li></ul><ul><li>Enviar reporte a: </li></ul><ul><li>[email_address] </li></ul>

×