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