Skip to content

Commit 0b12873

Browse files
authored
Merge pull request mouredev#7203 from wapastorv/main
#10 - JavaScript
2 parents bf33e99 + 671254e commit 0b12873

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
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+
/* Manejo de excepciones en JavaScript:
10+
JavaScript tiene un mecanismo de manejo de excepciones que permite
11+
capturar errores y manejarlos de forma controlada. Para ello, se
12+
utiliza la estructura try-catch-finally, que permite intentar
13+
ejecutar un bloque de código, capturar cualquier excepción que
14+
se produzca y ejecutar un bloque de código adicional. Por ejemplo:
15+
*/
16+
function dividir(a, b) {
17+
// Intentamos dividir a por b
18+
try {
19+
var resultado = a / b;
20+
console.log('Resultado:', resultado);
21+
}
22+
catch (error) {
23+
// Capturamos cualquier excepción que se produzca
24+
console.error('Error:', error);
25+
}
26+
finally {
27+
// Este bloque se ejecuta siempre, haya o no excepciones
28+
console.log('Fin de la función');
29+
}
30+
}
31+
32+
// Probamos la función con distintos valores
33+
dividir(10, 2); // Resultado: 5
34+
dividir(10, 0); // Error: Infinity
35+
dividir(10, 'a'); // Error: NaN
36+
dividir(10); // Error: NaN
37+
dividir(); // Error: NaN
38+
dividir(10, 2, 3); // Error: NaN
39+
// Ejmeplo sin el uso de excepciones
40+
function dividirSinExcepciones(a, b) {
41+
if (b === 0) {
42+
console.error('Error: División por cero');
43+
return;
44+
}
45+
var resultado = a / b;
46+
console.log('Resultado:', resultado);
47+
console.log('Fin de la función');
48+
}
49+
50+
// Probamos la función con distintos valores
51+
dividirSinExcepciones(10, 2); // Resultado: 5
52+
dividirSinExcepciones(10, 0); // Error: División por cero
53+
dividirSinExcepciones(10, 'a'); // Resultado: NaN
54+
55+
/* En este caso, al intentar dividir 10 por 0, se produce una excepción
56+
de tipo "Infinity". Esta excepción es capturada por el bloque catch,
57+
que imprime un mensaje de error. A continuación, se ejecuta el bloque
58+
finally, que imprime un mensaje de fin de programa. De esta forma,
59+
el programa no se detiene de forma inesperada y podemos controlar
60+
el flujo de ejecución.
61+
*/
62+
63+
/* DIFICULTAD EXTRA (opcional):
64+
* Crea una función que sea capaz de procesar parámetros, pero que también
65+
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
66+
* corresponderse con un tipo de excepción creada por nosotros de manera
67+
* personalizada, y debe ser lanzada de manera manual) en caso de error.
68+
* - Captura todas las excepciones desde el lugar donde llamas a la función.
69+
* - Imprime el tipo de error.
70+
* - Imprime si no se ha producido ningún error.
71+
* - Imprime que la ejecución ha finalizado.
72+
*/
73+
74+
function procesarParametros(param1, param2) {
75+
try {
76+
if (param1 === undefined || param2 === undefined) {
77+
throw new Error('Error: Parámetros indefinidos');
78+
}
79+
if (isNaN(param1) || isNaN(param2)) {
80+
throw new Error('Error: Parámetros no numéricos');
81+
}
82+
if (param1 === 0 || param2 === 0) {
83+
throw new Error('Error: División por cero');
84+
}
85+
var resultado = param1 / param2;
86+
console.log('Resultado:', resultado);
87+
}
88+
catch (error) {
89+
console.error('Error:', error.message);
90+
}
91+
finally {
92+
console.log('Fin de la función');
93+
}
94+
}
95+
96+
// Probamos la función con distintos valores
97+
procesarParametros(10, 2); // Resultado: 5
98+
procesarParametros(10, 0); // Error: División por cero
99+
procesarParametros(10, 'a'); // Error: Parámetros no numéricos
100+
procesarParametros(10); // Error: Parámetros indefinidos
101+
procesarParametros(); // Error: Parámetros indefinidos
102+
procesarParametros(10, 2, 3); // Resultado: 5

0 commit comments

Comments
 (0)