Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 11 de Febrero 2016, 20:22
-
Otro más.
A partir de este código:
<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')?
throw "SHORT" en este caso envía un error personalizado en forma de string. Si se utiliza new Error('SHORT'), creamos un objeto que contendrá un parámetro que contiene un mensaje, además en dicho objeto se podrían especificar mas parámetros.
b) ¿Cuál es el objetivo que parecía pretender cumplir el autor del código?
Comprobar que la password introducida en el formulario contenga entre 5 y 10 caracteres. Si no es así, se manda una excepción indicando si tiene más, o menos caracteres de los requeridos y posteriormente mostrar un mensaje de error, y por ultimo dentro del finally borrar la password, tanto si se ha dado por buena como por mala anteriormente.
c) ¿En qué casos se ejecuta la cláusula finally incluida en el código?
Siempre.
Saludos.
-
Hola!
En la pregunta a) la diferencia está en lo que se lanza con el error. Como has comentado en el primer caso es una cadena de texto, y en el segundo un objeto.
En la b) así es, lo que no parece coherente es borrar tanto si se supera la validación como si no, eso parece un error de diseño. Por eso el enunciado habla de "lo que parecía pretender cumplir el autor..."
c) Así es
Saludos!