Skip to content

Commit 4a1618b

Browse files
committed
mouredev#10 javascript - Gianbordon
1 parent 187dcc9 commit 4a1618b

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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+
//
21+
// Exepciones (try and catch)
22+
//
23+
24+
// Error al dividir por cero, genero el error
25+
try {
26+
const resultado = 10 / 0
27+
console.log("🔢 División por cero:", resultado)
28+
} catch (error) {
29+
console.error("⚠️ Error al dividir:", error.message)
30+
}
31+
console.log("✅ El programa continúa tras dividir por cero")
32+
33+
// Error al acceder a un indice que no existe
34+
try {
35+
const lista = [1, 2, 3]
36+
const valor = lista[10].toString()
37+
console.log("📦 Valor accedido:", valor)
38+
} catch (error) {
39+
console.error("🚨 Error al acceder a índice inexistente:", error.message)
40+
}
41+
console.log("✅ El programa continúa tras acceder a un índice no existente\n")
42+
43+
// Error en un listado
44+
try {
45+
const texto = '{"nombre": "Gian", "edad": }'
46+
const objeto = JSON.parse(texto)
47+
} catch (error) {
48+
console.error("❌ Error al parsear JSON:", error.message)
49+
}
50+
console.log("✅ El programa continúa tras fallo en JSON\n")
51+
52+
// Error personalizado
53+
function dividir(a, b) {
54+
if (b === 0) throw new Error("No se puede dividir por cero (personalizado)")
55+
return a / b
56+
}
57+
58+
try {
59+
const resultado = dividir(10, 0)
60+
console.log("🧮 Resultado personalizado:", resultado)
61+
} catch (error) {
62+
console.error("🚫 Error personalizado:", error.message)
63+
}
64+
console.log("✅ El programa continúa tras lanzar un error personalizado")
65+
66+
//
67+
// EXTRA
68+
//
69+
70+
class MiErrorPersonalizado extends Error {
71+
constructor(mensaje) {
72+
super(mensaje)
73+
this.name = "MiErrorPersonalizado"
74+
}
75+
}
76+
77+
function procesarValor(valor) {
78+
if (typeof valor !== "number") {
79+
throw new TypeError("El valor no es un número.")
80+
}
81+
82+
if (valor < 0 || valor > 100) {
83+
throw new RangeError("El número debe estar entre 0 y 100.")
84+
}
85+
86+
if (valor === 42) {
87+
throw new MiErrorPersonalizado("¡42 es un número prohibido!")
88+
}
89+
90+
return `✅ Valor aceptado: ${valor}`
91+
}
92+
93+
94+
try {
95+
const resultado = procesarValor(42)
96+
console.log(resultado)
97+
console.log("✅ No se produjo ningún error.")
98+
} catch (error) {
99+
console.error(`❌ Se capturó un error de tipo: ${error.name}`)
100+
console.error("📣 Mensaje:", error.message)
101+
} finally {
102+
console.log("🏁 La ejecución ha finalizado.")
103+
}

0 commit comments

Comments
 (0)