ERROR, THROW Y TRY CATCH JAVASCRIPT. MESSAGE, FILENAME, LINENUMBER. EVAL Y RANGEERROR, REFERENCE ERROR. EJEMPLOS (CU01187E)

Documentos relacionados
FORMULARIOS JAVASCRIPT: EJEMPLOS DE DOCUMENT.FORMS Y ELEMENTS. ACCESO DIRECTO A FORMULARIOS Y CAMPOS CON ID Y NAME (CU01175E)

STATIC JAVASCRIPT. PROPIEDADES Y MÉTODOS ESTÁTICOS O DE CLASE. EJERCICIO. CÓDIGO EJEMPLOS BÁSICOS (CU01148E)

CREAR OBJETOS JAVASCRIPT CON THIS Y NEW. EJEMPLOS PARA ENTENDER QUÉ SON LOS OBJETOS Y PARA QUÉ SIRVEN. (CU01143E)

OPERADOR CONDICIONAL TERNARIO TIPO IF CON INTERROGACIÓN (JAVASCRIPT, JAVA, ETC.) Y DOS PUNTOS. EJEMPLOS (CU01152E)

SETATTRIBUTE Y GETATTRIBUTE JAVASCRIPT. DIFERENCIAS DE SINTAXIS PROPIEDADES CON HTML. EJEMPLO MAXLENGTH. (CU01176E)

SWITCH JAVASCRIPT. SELECCIÓN ENTRE ALTERNATIVAS. DIAGRAMA DE FLUJO Y EJEMPLO DE APLICACIÓN. (CU01120E)

HERENCIA JAVASCRIPT: EJEMPLO CON CÓDIGO BÁSICO. JERARQUÍA DE CLASES EN CADENA DE PROTOTIPOS. (CU01149E)

FUNCIÓN EVAL JAVASCRIPT. GETELEMENTSBY CLASSNAME. EJEMPLO CÓDIGO CALCULADORA SIMPLE (CU01133E)

IF ELSE, IF ELSE IF JAVASCRIPT. CONDICIONALES DEL FLUJO O ESTRUCTURAS DE DECISIÓN. EJEMPLOS. EJERCICIOS. (CU01119E)

ARRAYS ASOCIATIVOS JAVASCRIPT? MAPS? RECORRER PROPIEDADES DE OBJETOS CON FOR IN. EJEMPLOS EJERCICIOS RESUELTOS. (CU01146E)

CAPTURAR EVENTOS DE TECLADO JAVASCRIPT. TECLA PULSADA. FROMCHARCODE. KEYCODE, WICH. (CU01161E)

DEPURAR JAVASCRIPT. CONSOLE.LOG. DEBUG DE ERRORES CON FIREFOX (FIREBUG), CHROME, INTERNET EXPLORER. IDES. (CU01151E)

ADDEVENTLISTENER JAVASCRIPT. REMOVE. ATTACHEVENT. THIS EN EVENTOS. PROPAGACIÓN. BUBBLING. CAPTURA. (CU01158E)

EJEMPLO RELOJ JAVASCRIPT. SETTIMEOUT, CLEARTIMEOUT, SETINTERVAL, REQUEST ANIMATIONFRAME. (CU01164E)

JERARQUÍA DE OBJETOS JAVASCRIPT. FORMS, ELEMENTS, IMAGES, LINKS. NAVIGATOR: USERAGENT, GEOLOCATION, ONLINE. (CU01170E)

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)

VARIABLES STRING JAVASCRIPT. DEBEN USARSE COMILLAS SIMPLES O DOBLES? CARACTERES DE ESCAPE \N \T.LENGTH (CU01114E)

DE LA ESTRUCTURA HTML Y SU SEMÁNTICA AL MODELO DE CAJAS CSS. ELEMENTOS BLOCK Y ELEMENTOS INLINE (CU01008D)

PROPIEDADES VISIBILITY (VISIBLE, HIDDEN, COLLAPSE) Y OVERFLOW CSS. SCROLL. OVERFLOW- X Y OVERFLOW-Y. EJEMPLOS (CU01038D)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

REQUEST EN PHP. DIFERENCIAS Y VENTAJAS E INCONVENIENTES ENTRE GET, POST Y REQUEST. EJERCICIOS RESUELTOS Y EJEMPLOS. (CU00835B)

Manejo de eventos en JavaScript WEB-TECHNOLOGIES

DATE JAVASCRIPT. DATE.NOW, DATE.PARSE, DATE.UTC. DIFERENCIAS ENTRE GMT Y UTC Ó LOCAL. GETMONTH, GETDATE, GETDAY. (CU01162E)

JavaScript. CI-2413 Desarrollo de aplicaciones para Internet Prof. Braulio José Solano Rojas ECCI, UCR

TEMA 8. Agenda. Excepciones

FORMULARIOS HTML. BOTONES: ENVÍO SUBMIT, RESTABLECIMIENTO RESET, IMAGEN Y CONTENIDO (BUTTON). (CU00724B)

PREPARANDO EL ENTORNO DE DESARROLLO. DESCARGAR E INSTALAR NOTEPAD++ COMO EDITOR DE CÓDIGO (CU00708B)

BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F)

ENVÍO DE DATOS DE UN FORMULARIO CON PHP. MÉTODOS GET Y POST. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00832B)

DISEÑO WEB CSS CON DOS, TRES O MÁS COLUMNAS CON FLOAT. WIDTH EN PORCENTAJES NO FUNCIONA? TIPOS DE ANCHO. EJEMPLOS. (CU01036D)

JAV JA A V S A C S R C I R P I T

API CANVAS HTML Y JAVASCRIPT. EJEMPLOS. DIBUJAR CÍRCULOS, FORMAS, GRÁFICOS, ANIMACIONES, JUEGOS, ETC. (CU01195E)

Lenguajes de Script. Qué son los Lenguajes de Script?

CONCEPTO DE CASCADA Y HERENCIA CSS. QUÉ ES? ESTILOS DE USUARIO. IMPORTANCIA!IMPORTANT. EJEMPLOS. (CU01017D)

LECTURA Y ESCRITURA (fwrite) DE ARCHIVOS DE TEXTO CON PHP. MODOS DE ACCESO. EJERCICIOS RESUELTOS Y EJEMPLOS. (CU00837B)

DISABLED JAVASCRIPT EN INPUT TEXT, SUBMIT, BUTTON, SELECT, LINK, STYLE... IMPEDIR ENVÍO DUPLICADO FORM. DESACTIVAR CSS (CU01183E)

Introducción al desarrollo web (idesweb)

DEGRADADOS CSS. EFECTO LINEAL Y RADIAL. LINEAR-GRADIENT. ANGULOS CSS: UNIDADES ANGULARES DEG, GRAD, TURN, RAD. (CU01060D)

A continuación el código del formulario Registro.html y del archivo validar.js de javascript:

ESTILOS Y HERENCIA EN TABLAS CSS. WIDTH, HEIGHT, FONT-SIZE Y OVERFLOW EN TABLAS. PROPIEDAD BORDER- COLLAPSE (CU01051D)

Tema 3. Aplicaciones de Tipo Consola

Parte I: Programación en un lenguaje orientado a objetos

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

EFECTO CSS DE ESQUINAS REDONDEADAS: BORDER- RADIUS. BORDER-LEFT- TOP-RADIUS. EJEMPLOS CIRCULO O ELIPSE (CU01058D)

FORMULARIOS EN HTML. OPCIONES. CASILLAS DE VERIFICACIÓN CHECKBOX. BOTONES DE RADIO. LISTAS DE OPCIONES SELECT, OPTGROUP, OPTION.

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

Tema 4. Excepciones en Java

Características de JavaScript

Cómo depurar código Python con PyScripter

CONCEPTO FLOAT CSS. NONE, LEFT, RIGHT Y CENTRAR?. COLOCAR TEXTO ALREDEDOR DE UNA IMAGEN. EJEMPLOS DE POSICIONAMIENTO FLOTANTE (CU01034D)

Instrucciones Si... Entonces y Si... Entonces SiNo (if then else) en pseudocódigo (CU00142A)

PHP INSERT INTO VALUES. INSERTAR DATOS (REGISTROS O FILAS) EN BASE DE DATOS MySQL. EJEMPLOS Y EJERCICIO RESUELTO (CU00843B)

Browserify (práctica)

Curso de PHP. Pascual Gómez del Pino Página 1

Tutorial de enlace entre Formulario Web y Servicio Web REST. Programación en Internet

TUTORIAL SOBRE EXPRESIONES REGULARES EN JAVASCRIPT PARA VALIDACIÓN DE CAMPOS EN FORMULARIOS HTML:

ENCABEZADOS HTML <h1> A <h6>, PÁRRAFOS <p>, APLICAR ESTILOS Y ETIQUETA <pre> DE TEXTO PREFORMATEADO. EJEMPLOS (CU00715B)

LÍNEAS SEPARADORAS. ETIQUETA <HR>. COMENTARIOS EN HTML. ATRIBUTOS SIZE, WIDTH, NOSHADE (DEPRECATED). EJEMPLOS (CU00716B)

API GEOLOCATION Y API GOOGLE MAPS JAVASCRIPT. EJEMPLOS. INSERTAR MAPAS INTERACTIVOS, SATÉLITE, ETC. EN WEBS. EFECTOS. (CU01197E)

El programa en JavaScript debe ir encerrado entre la marca script e inicializada la propiedad type con la cadena text/javascript:

QUÉ ES Y PARA QUÉ SIRVE EL LENGUAJE CSS (CASCADING STYLE SHEETS HOJAS DE ESTILOS EN CASCADA)? (DV00203A)

Creación de Shell Scripts

FUNCIONES EN C QUÉ SIGNIFICA VOID? QUÉ ES EL TIPO DE RETORNO? PARA QUÉ SIRVE RETURN? MÓDULOS (CU00547F)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

ASIGNACIÓN DE IGUALDAD EN JAVA. REFERENCIAS A OBJETOS. DIFERENCIA ENTRE IGUALDAD E IDENTIDAD. (CU00663B)

CLASS JAVASCRIPT CLASES? OBJETOS PREDEFINIDOS. WINDOW, OBJETO GLOBAL. NUMBER, MATH, DATE, REGEXP, ERROR. (CU01144E)

QUÉ ES Y PARA QUÉ SIRVE AJAX? JAVASCRIPT ASÍNCRONO, XML Y JSON. VENTAJAS E INCONVENIENTES DE AJAX. XMLHTTPREQUEST. EJEMPLO.

EFECTO SOMBRA CSS CON BOX-SHADOW. SOMBRA INTERIOR INSET. BLUR O DIFUMINADO, SPREAD. EJEMPLOS Y EJERCICIOS RESUELTOS (CU01059D)

<script type="text/javascript" src="miscript.js"></script>

Ejercicio ejemplo resuelto: verificar el algoritmo de resolución de una ecuación de segundo grado. (CU00237A)

Ejercicios de tratamiento de errores

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Z-INDEX CSS NO FUNCIONA? CONTROL DE SUPERPOSICIÓN DE ELEMENTOS COMO CAPAS, DIV O IMÁGENES (CU01039D)

Anexo. Control de errores

INF 473 Desarrollo de Aplicaciones en Java

Editor de código Visual Basic. Lista de miembros automática, sugerencias de sintaxis, autocompletado y otras opciones. (CU00313A)

MENÚ DESPLEGABLE CSS HORIZONTAL. EFECTO DROPDOWN CON ITEMS Y SUBITEMS. USO DE FLOAT, DISPLAY, POSITION EJEMPLO DE CÓDIGO.

DESCARGAR E INSTALAR EL NAVEGADOR. VENTAJAS DE GOOGLE CHROME. FIREFOX, TAMBIÉN ENTRE LOS MEJORES (CU00710B)

Excepciones e hilos. Acceso a la red - Ejercicios

MANEJO DE EXCEPCIONES en C++ Dr. Oldemar Rodríguez R. Escuela de Informática Universidad Nacional

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

CÓMO INICIAR UNA SESIÓN DE CONTROL REMOTO BAJO DEMANDA

1. Haz que se muestre una pantalla de alerta con tu nombre. 2. Repite el ejercicio anterior pero usando una variable para guardar tu nombre

CUÁLES SON LAS VERSIONES DE HTML? DIFERENCIAS ENTRE HTML 4 Y HTML 5. SIGNIFICADO DE STRICT, TRANSITIONAL Y FRAMESET (CU00706B)

Presentación. Programación I. Programación Orientada a Objetos. :: Prof. Yeniffer Peña

GUIA DE LABORATORIO # 2 ENTORNO DE DESARROLLO Y COMPILACIÓN DE UN PROGRAMA EN C

TEMA 3 A: INTRODUCCIÓN AL DOM

SESSIONSTORAGE Y LOCALSTORAGE. DIFERENCIAS. GUARDAR DATOS EN CACHÉ Y PERSISTENCIA CON JAVASCRIPT (CU01198E)

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

OPERADORES ARITMÉTICOS EN PHP: OPERADORES BÁSICOS Y RESTO (MÓDULO). INCREMENTO Y DECREMENTO. (CU00819B)

Transcripción:

APRENDERAPROGRAMAR.COM ERROR, THROW Y TRY CATCH JAVASCRIPT. MESSAGE, FILENAME, LINENUMBER. EVAL Y RANGEERROR, REFERENCE ERROR. EJEMPLOS (CU01187E) Sección: Cursos Categoría: Tutorial básico del programador web: JavaScript desde cero Fecha revisión: 2029 Resumen: Entrega nº87 del Tutorial básico JavaScript desde cero. Autor: César Krall

TRATAMIENTO DE ERRORES Los programadores JavaScript se enfrentan con frecuencia a la aparición de errores durante la ejecución del código en los navegadores. Al igual que otros lenguajes de programación, JavaScript permite la captura de esos errores con instrucciones que permiten identificar y tratar dichos errores. ERROR, THROW Y TRY CATCH La gestión de errores en tiempo de ejecución tiene como elementos principales las sentencias try catch, throw, y el tipo de datos definido por JavaScript Error. El tipo de datos Errorr es un tipo de datos predefinido de JavaScript que permitee crear objetos de tipo Error. Los objetos de tipo Error son creados automáticamente por JavaScript cuando se produce un error en tiempo de ejecución, pero también podemos definir la creación de objetos Error a través del código. Un objetoo Error representa un error y tiene propiedades asociadas (por ejemplo propiedades que informan del tipo de error de que se trata). Normalmente un error no se crea y se guarda, sino que un error se lanza (is thrown). Al lanzarse un error, el flujo o ejecución prevista del script se verá alterado. Esa alteración puede dar lugar a la detenciónn del script si el error impide que prosiga la ejecución, o a que el script continúe ejecutándose con anomalías, etc.. Como forma de prevenir que el script se detenga sin más, o que aparezcan disfunciones no previstas, existe la posibilidad de capturar y tratar el error usando las sentencias try catch. Un esquema típico para tratamiento de errores será el siguiente: try { //Código que vamos a ejecutar // Si se produce un error se lanza una excepción y se salta al catch catch (e) { // e representa el error lanzado // mensajes de alerta, acciones a ejecutar, etc. Vamos a partir del siguiente ejemplo que al ser ejecutado dará lugar a que salte un error. Escribe este código, activa la consola de tu navegador y comprueba cómo al ejecutar el código te aparece un mensaje de error cuando haces click sobre el texto Probar.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html><head><title>ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> <script type="text/javascript"> function ejemploerror() { cambiarimagen(imagen1); alert('se cambió la imagen'+window.imagen1); alert('a continuación se le solicitarán los datos fiscales'); </script> </head> <body><div id="cabecera"><h2>cursos aprenderaprogramar.com</h2><h3>ejemplos JavaScript</h3></div> <div style="color:blue;" id ="pulsador" onclick="ejemploerror()"> Probar </div> </body> </html> El resultado esperado es que no ocurra nada y que en la consola se muestre un mensaje de error similar a este: <<ReferenceError: cambiarimagen is not defined>>. Este error nos informa de que se está invocando una función que no está definida (además tenemos un segundo error, ya que imagen1 tampoco está definido). Supongamos que este error aparezca sin querer, debido a un error del programador o debido a que el usuario o el código HTML no facilitan los datos que se espera. Un bloque try catch puede envolver a un fragmento de código (tan amplio como se desee) y establecer un tratamiento para el error, de modo que el script continuará ejecutándose siempre que sea posible. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html><head><title>ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> <script type="text/javascript"> function ejemploerror() { try{ cambiarimagen(imagen1); alert('se cambió la imagen'+imagen1); catch(e){ alert('se produjo un error. Referencia: '+e); alert('a continuación se le solicitarán los datos fiscales'); </script></head> <body><div id="cabecera"><h2>cursos aprenderaprogramar.com</h2><h3>ejemplos JavaScript</h3></div> <div style="color:blue;" id ="pulsador" onclick="ejemploerror()"> Probar </div> </body></html> El resultado esperado es que se muestre una ventana de mensaje de alerta con un texto similar al siguiente: <<Se produjo un error. Referencia: ReferenceError: cambiarimagen is not defined>> y que seguidamente se muestre el mensaje <<A continuación se le solicitarán los datos fiscales>>. La diferencia entre este código y el anterior donde no existía un bloque try catch es que como comprobamos aquí el error se captura, es tratado y la ejecución del script continúa. En el caso anterior no llegábamos a ver el mensaje A continuación se le solicitarán los datos fiscales porque el script quedaba detenido.

Un bloque try catch se introducirá, típicamente, en fragmentos de código donde sea previsible que pueda producirse un error, con el fin de capturarlo y tratarlo. Otro esquema típico para tratamiento de errores será el siguiente: try { //Código que vamos a ejecutar if (evaluación indica que existe un error) {throw new Error("Descripción del error"); catch (e) { // e representa el error lanzado // mensajes de alerta, acciones a ejecutar, etc. Escribe este código y comprueba sus resultados al introducir diferentes números: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html><head><title>ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> <script type="text/javascript"> function ejemploerror() { try{ var numerousuario = prompt('introduzca un número del 1 al 9 por favor: '); if (isnan(numerousuario) numerousuario<1 numerousuario>9) { throw new Error('Número introducido no válido'); catch(e){ alert('se produjo un error. Referencia: '+e); alert('a continuación se le solicitarán los datos fiscales'); </script></head> <body><div id="cabecera"><h2>cursos aprenderaprogramar.com</h2><h3>ejemplos JavaScript</h3></div> <div style="color:blue;" id ="pulsador" onclick="ejemploerror()"> Probar </div> </body></html> El resultado esperado es que si introducimos un número que se considera válido (por ejemplo el 4), la ejecución se realice con normalidad. Por el contrario, si introducimos sun número que se considera no válido como el 88, se lanzará la excepción y se mostrará el mensaje <<Número introducido no válido>>. Aquí realmente no necesitábamos lanzar una excepción (ya que podríamos haber controlado el proceso de otra manera), por lo que este código debemos tomarlo únicamente como un ejemplo y no como una referencia de cómo hacer las cosas. Lo más habitual entre programadores es no lanzar excepciones excepto ante circunstancias que difícilmente pueden ser tratadas de otra manera (por ejemplo que el acceso a un recurso que normalmente esté disponible, como un fichero, pueda no estar disponible en un momento concreto).

CLÁUSULA FINALLY Una instrucción try además de bajo el esquema try {... catch { que hemos visto anteriormente, se puede combinar con una cláusula finally de alguna de estas maneras: try {... catch {... finally { y también con try {... finally {. Las sentencias incluidas dentro de una cláusula finally se ejecutarán independientemente de que se haya producido un error o no durante la ejecución del bloque try. El objetivo habitual de una cláusula finally es liberar un recurso (por ejemplo cerrar un archivo) que haya podido ser comprometido anteriormente. El esquema habitual será el siguiente: abrirelrecurso(); //Por ejemplo accedemos a un fichero try { // Ejecutamos acciones previstas con el recurso escribirenelfichero(fechaactual); finally { cerrarelrecurso(); // Por ejemplo cerramos el fichero Escribe este código y comprueba sus resultados: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html><head><title>ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> <script type="text/javascript"> function ejemploerror() { try{ var numerousuario = prompt('introduzca un número del 1 al 9 por favor: '); if (isnan(numerousuario) numerousuario<1 numerousuario>9) { throw new Error('Número introducido no válido'); catch(e){ alert('se produjo un error. Referencia: '+e); finally {alert('se ejecuta siempre haya o no captura de error'); alert('a continuación se le solicitarán los datos fiscales'); </script></head> <body><div id="cabecera"><h2>cursos aprenderaprogramar.com</h2><h3>ejemplos JavaScript</h3></div> <div style="color:blue;" id ="pulsador" onclick="ejemploerror()"> Probar </div> </body></html> El resultado esperado es que el mensaje <<Se ejecuta siempre haya o no captura de error>> aparezca tanto cuando se lanza un error como cuando no se lanza.

TIPOS ESPECIALIZADOS DE ERROR Además de los objetos Error que indican un error genérico, podemos lanzar errores especializados. Entre los errores especializados tenemos los siguientes: Tipo de error Significado Ejemplo EvalError RangeError ReferenceError SyntaxError TypeError URIError Representa un error relacionado con la ejecución de la función eval() Representa que un valor está fuera del rango permitido para una variable o parámetro. Representa que se ha intentado invocar una función u objeto y no existe en ese ámbito Representa un error en la sintaxis del código que se pretende ejecutar con eval() Representa un error debido a que una variable o parámetro no tienen un tipo válido. Representa un error cuando se pasan parámetros no válidos a las funciones encodeuri() ó decodeurl() throw new EvalError(); throw new RangeError(); throw new ReferenceError(); throw new SyntaxError(); throw new TypeError(); Throw new URIError(); ANIDAMIENTO DE TRY Se pueden incluir bloques try dentro de otros bloques try. Normalmente cada bloque try llevará su catch correspondiente, pero en caso de que un bloque try interno a otro carezca de catch, en caso de lanzarse una excepción se accederá al catch del bloque externo. PROPIEDADES DE LOS OBJETOS ERROR La creación de objetos Error puede realizarse indicando simplemente new Error() o bien introduciendo parámetros. Los parámetros admitidos son: new Error (opcional_message, opcional_filename, opcional_linenumber);

Esta información puede ser usada durante el tratamiento del error de la forma en que se considere oportuno. Por ejemplo podríamos escribir: catch(e) { alert ('Se produjo un error. Referencia: '+e.message + ' Línea: '+e.linenumber +' Fichero: '+e.filename); Los errores que se lanzan automáticamente llevarán asociado un contenido para estas propiedades de forma automática. Al mensaje descriptivo se puede acceder con la propiedad message, y al nombre de archivo y número de línea con las propiedades linenumber y filename. En los errores que lanzamos nosotros con new Error las propiedades del objeto pueden ser establecidas por nosotros, pero si no establecemos las propiedades, éstas tomarán los valores asociados automáticamente. Otra propiedad de los objetos Error es name. Esta propiedad inicialmente toma el valor <<Error>>, pero podemos establecer por ejemplo e.name ='Error-Usuario'. Al invocar e.tostring() se devuelve la concatenación de name con message. EJERCICIO Un programador ha desarrollado un código y nos han pedido que lo revisemos. Escribe este código en un editor, ejecútalo y responde a las siguientes preguntas: <html> <head> <meta charset="utf-8"> <style type="text/css"> input {margin:10px; </style> <script> function validarpassword(password){ try { if(password.length < 5 ) { throw "SHORT"; else if(password.length > 10 ) { throw "LONG"; alert("password Validated!"); catch(e) { if(e == "SHORT"){ alert("not enough characters in password!"); else if(e == "LONG"){ alert("password contains too many characters!"); finally{ document.miformulario.password.value=""; alert("la revisión ha terminado."); </script> </head> <body> <form name="miformulario" onsubmit="validarpassword(document.getelementbyid('pass').value)" action="#" > Nombre de usuario: <input type="text" name="campo1"><br> Password: <input id="pass" type="password" name="password"><br> <input type="submit" value="comprobar" name="comprobar"> </form> </body> </html>

a) Busca información en internet y respode: Qué significado tiene una instrucción como throw "SHORT";? A qué da lugar? Qué diferencia hay entre throw "SHORT" y throw new Error('SHORT')? b) Cuál es el objetivo que parecía pretender cumplir el autor del código? c) En qué casos se ejecuta la cláusula finally incluida en el código? Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com. Próxima entrega: CU01188E Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&itemid=206