Skip to content

Commit a0fc16b

Browse files
committed
#10 - JavaScript
1 parent 502d8c0 commit a0fc16b

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de manejo de excepciones según tu lenguaje.
4+
* Fuerza un error en tu código, captura el error, imprime dicho error
5+
* y evita que el programa se detenga de manera inesperada.
6+
* Prueba a dividir "10/0" o acceder a un índice no existente
7+
* de un listado para intentar provocar un error.
8+
*/
9+
10+
try {
11+
console.log(myvar);
12+
} catch (error) {
13+
console.error(error);
14+
} finally {
15+
console.log("La ejecución ha finalizado.");
16+
}
17+
18+
/*
19+
* DIFICULTAD EXTRA (opcional):
20+
* Crea una función que sea capaz de procesar parámetros, pero que también
21+
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
22+
* corresponderse con un tipo de excepción creada por nosotros de manera
23+
* personalizada, y debe ser lanzada de manera manual) en caso de error.
24+
* - Captura todas las excepciones desde el lugar donde llamas a la función.
25+
* - Imprime el tipo de error.
26+
* - Imprime si no se ha producido ningún error.
27+
* - Imprime que la ejecución ha finalizado.
28+
*/
29+
30+
class CustomError extends Error {
31+
constructor(mensaje) {
32+
super(mensaje);
33+
this.name = this.constructor.name;
34+
}
35+
}
36+
37+
function proccessNumberParam(param) {
38+
try {
39+
if (typeof param !== 'number') {
40+
throw new TypeError("El parámetro no puede ser undefined");
41+
}
42+
43+
if (param < 0) {
44+
throw new RangeError("El parámetro no puede ser negativo");
45+
}
46+
47+
if (param % 2 !== 0) {
48+
throw new CustomError("El parámetro no es un número par");
49+
}
50+
51+
console.log("El parámetro es correcto y no se ha producido ningún error.");
52+
} catch (error) {
53+
console.error(error.constructor.name + ": " + error.message);
54+
} finally {
55+
console.log("La ejecución ha finalizado.");
56+
}
57+
}
58+
59+
proccessNumberParam(10);
60+
proccessNumberParam("10");
61+
proccessNumberParam(-10);
62+
proccessNumberParam(3);

0 commit comments

Comments
 (0)