Skip to content

Commit 873afec

Browse files
committed
#10 - javascript
1 parent da8de03 commit 873afec

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
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+
// Try - Catch - Finally - Throw
21+
22+
try {
23+
// El bloque try intentara ejecutar al logica
24+
// En este caso llamo a una funcion que no existe,
25+
callFunction()
26+
} catch (error) {
27+
// el bloque Catcht captura el error para que el codigo pueda seguir ejecutandose fuera de este bloque
28+
console.log(error.message);
29+
30+
} finally {
31+
console.log("Codigo que se ejecuta siempre");
32+
33+
}
34+
35+
// Con Throw podemos generar los tipos de error como tambien alguno de tipo personalizado
36+
37+
try {
38+
throw new Error("Error del tipo 'Error'")
39+
} catch (error) {
40+
console.log(error.message);
41+
}
42+
43+
// Crear un error personalizado
44+
const gifts = {
45+
toys: ["playstation 5", "pelota", "mochila"],
46+
//books : ["Harry potter", "Percy Jackson", "Codigo Limpio"],
47+
sport: ["shorts", "pesas", "cuerda de saltar"],
48+
};
49+
50+
class CategoryNotFound extends Error {
51+
constructor(message) {
52+
super(message);
53+
}
54+
}
55+
56+
// 5. Lanza una excepción personalizada.
57+
if (!("books" in gifts)) {
58+
try {
59+
throw new CategoryNotFound(
60+
"Error: No existe la categoria libros en los regalos"
61+
);
62+
} catch (error) {
63+
console.log(error.message);
64+
}
65+
}
66+
67+
/*
68+
* Crea una función que sea capaz de procesar parámetros, pero que también
69+
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
70+
* corresponderse con un tipo de excepción creada por nosotros de manera
71+
* personalizada, y debe ser lanzada de manera manual) en caso de error.
72+
* - Captura todas las excepciones desde el lugar donde llamas a la función.
73+
* - Imprime el tipo de error.
74+
* - Imprime si no se ha producido ningún error.
75+
* - Imprime que la ejecución ha finalizado.
76+
*/
77+
78+
// Excepción personalizada
79+
class CustomError extends Error {
80+
constructor(message) {
81+
super(message);
82+
this.name = "CustomError";
83+
}
84+
}
85+
86+
// Función que procesa parámetros y lanza excepciones
87+
function paramProcess(param) {
88+
if (param === null || param === undefined) {
89+
throw new TypeError("El parámetro no puede ser null o undefined");
90+
}
91+
92+
if (typeof param !== "number") {
93+
throw new CustomError("El parámetro debe ser un número");
94+
}
95+
96+
if (param < 0) {
97+
throw new RangeError("El parámetro no puede ser negativo");
98+
}
99+
100+
// Proceso normal si no hay errores
101+
return `El parámetro procesado es: ${param}`;
102+
}
103+
104+
// Llamada a la función y manejo de excepciones
105+
try {
106+
console.log(paramProcess(-1)); // Cambia este valor para probar diferentes casos
107+
console.log("No se ha producido ningún error.");
108+
} catch (error) {
109+
if (error instanceof CustomError) {
110+
console.error(`Error personalizado: ${error.message}`);
111+
} else if (error instanceof TypeError) {
112+
console.error(`Error de tipo: ${error.message}`);
113+
} else if (error instanceof RangeError) {
114+
console.error(`Error de rango: ${error.message}`);
115+
} else {
116+
console.error(`Error desconocido: ${error.message}`);
117+
}
118+
} finally {
119+
console.log("La ejecución ha finalizado.");
120+
}

0 commit comments

Comments
 (0)