Skip to content

Commit bd07f4c

Browse files
committed
mouredev#10 - javascript
1 parent f4aaaf5 commit bd07f4c

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
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+
DIFICULTAD EXTRA (opcional):
10+
Crea una función que sea capaz de procesar parámetros, pero que también
11+
pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
12+
corresponderse con un tipo de excepción creada por nosotros de manera
13+
personalizada, y debe ser lanzada de manera manual) en caso de error.
14+
- Captura todas las excepciones desde el lugar donde llamas a la función.
15+
- Imprime el tipo de error.
16+
- Imprime si no se ha producido ningún error.
17+
- Imprime que la ejecución ha finalizado.
18+
*/
19+
20+
// 🔥 Forzar un error: Dividir entre cero
21+
try {
22+
const resultado = 10 / 0
23+
console.log("Resultado:", resultado) // Resultado: Infinity
24+
} catch (error) {
25+
console.error("Se produjo un error:", error.message)
26+
} finally {
27+
console.log("La ejecución ha finalizado.")
28+
}
29+
30+
// 🔥 Forzar otro error: Acceder a un índice no existente de un array
31+
try {
32+
const lista = [1, 2, 3]
33+
console.log(lista[5])
34+
} catch (error) {
35+
console.error("Se produjo un error:", error.message)
36+
} finally {
37+
console.log("La ejecución ha finalizado.")
38+
}
39+
40+
// 🔥 Extra
41+
// Excepción personalizada
42+
class MiErrorPersonalizado extends Error {
43+
constructor(message) {
44+
super(message);
45+
this.name = "MiErrorPersonalizado";
46+
}
47+
}
48+
49+
// lanzar excepciones
50+
function procesarParametros(parametro) {
51+
if (typeof parametro !== "number") {
52+
throw new TypeError("El parámetro debe ser un número.")
53+
}
54+
55+
if (parametro < 0) {
56+
throw new RangeError("El parámetro no puede ser negativo.")
57+
}
58+
59+
if (parametro === 42) {
60+
throw new MiErrorPersonalizado("El número 42 está prohibido.")
61+
}
62+
63+
console.log("Procesamiento exitoso. Parámetro:", parametro)
64+
}
65+
66+
// Casos específicos
67+
function probarCaso(valor) {
68+
console.log(`\nProbando con el valor: ${valor}`)
69+
try {
70+
procesarParametros(valor)
71+
console.log("No se ha producido ningún error.")
72+
} catch (error) {
73+
console.error("Tipo de error:", error.name)
74+
console.error("Mensaje:", error.message)
75+
} finally {
76+
console.log("La ejecución ha finalizado.")
77+
}
78+
}
79+
80+
probarCaso(10); // Caso válido
81+
probarCaso("texto"); // Caso inválido (no es un número)
82+
probarCaso(-5); // Caso inválido (número negativo)
83+
probarCaso(42); // Caso inválido (número prohibido)

0 commit comments

Comments
 (0)