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