Clase19

384 views
363 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
384
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×