Skip to content

Commit

Permalink
Merge pull request #2440 from giovanyosorio/main
Browse files Browse the repository at this point in the history
#10- Javascript
  • Loading branch information
Roswell468 authored Mar 19, 2024
2 parents 14d95d4 + 3e1bb32 commit a9980b3
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions Roadmap/10 - EXCEPCIONES/javascript/giovanyosorio.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* EJERCICIO:
* Explora el concepto de manejo de excepciones según tu lenguaje.
* Fuerza un error en tu código, captura el error, imprime dicho error
* y evita que el programa se detenga de manera inesperada.
* Prueba a dividir "10/0" o acceder a un índice no existente
* de un listado para intentar provocar un error.
*
* DIFICULTAD EXTRA (opcional):
* Crea una función que sea capaz de procesar parámetros, pero que también
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
* corresponderse con un tipo de excepción creada por nosotros de manera
* personalizada, y debe ser lanzada de manera manual) en caso de error.
* - Captura todas las excepciones desde el lugar donde llamas a la función.
* - Imprime el tipo de error.
* - Imprime si no se ha producido ningún error.
* - Imprime que la ejecución ha finalizado.
*/

function exception(n){
try{
let res=n/0
console.log(res)
}catch(error){
console.error("Ha ocurrido un error:", error.message);
}
finally {
// Este bloque siempre se ejecuta, haya ocurrido un error o no
console.log("La ejecución ha finalizado.");
}
}
exception(10)


// Excepción personalizada
class MiErrorPersonalizado extends Error {
constructor(mensaje) {
super(mensaje);
this.name = "MiErrorPersonalizado";
}
}

// Función que puede lanzar diferentes tipos de excepciones
function procesar(parametro) {
if (typeof parametro !== 'number') {
throw new TypeError("El parámetro debe ser un número.");
}
if (parametro < 0) {
throw new RangeError("El parámetro no puede ser negativo.");
}
if (parametro === 42) {
throw new MiErrorPersonalizado("¡Oh, no! El parámetro es 42.");
}
console.log("Parámetro procesado correctamente:", parametro);
}

// Llamada a la función dentro de un bloque try-catch
try {
procesar("texto"); // Provoca un TypeError
procesar(-5); // Provoca un RangeError
procesar(42); // Provoca un MiErrorPersonalizado
procesar(10); // Se ejecuta correctamente
} catch (error) {
console.error("Se ha producido un error:", error.name, error.message);
} finally {
console.log("La ejecución ha finalizado.");
}

0 comments on commit a9980b3

Please sign in to comment.