Control de errores

// Dentro de JS pueden suceder errores

// Hay una manera de gestioner errores
// try{...}catch(err){...}
let producto = {
    nombre: "Tuerca",
    precio: {
        PVP: 50,
        reducido: 20
    }
}
let producto2 = {
    nombre: "Tuerca"
}
// Intenta ejecutar el código siguiente
try {
    console.log(producto.nombre)
    console.log(producto.pecio.PVP)
    // Si hay algún error no petes, entra en el catch
} catch (err) {
    // Dentro del catch tenemos el parámetro 'err' con la información del error
    console.log(err.message);
    console.log(err);
} finally {
    console.log("Esto se ejecuta siempre");
}

console.log("Hola")
console.log(sumaPreciosOk([producto, producto2]));

// Esto lanza un error porque accedemos a una propiedad que no existe
function sumaPrecios(productos) {
    let suma = 0;
    for (let producto of productos) {
        suma += producto.precio.PVP;
    }
    return suma;
}
// Aquí lo hacemos bien: esto no interrumpe el programa
function sumaPreciosOk(productos) {
    try {
        let suma = 0;
        for (let producto of productos) {
            suma += producto.precio.PVP;
        }
        return suma;
    } catch {
        return 0; // podría devolver undefined
    }
}
console.log(suma(8));
try{
   console.log(suma(-8)); 
}catch(err){
    console.log(err.message)
}

// lanzar errores propios
function suma(numero) {
    if(numero<0 || numero>10000){
        throw new Error("Número fuera de margen");
    }
    let suma = 0;
    for (let i = 0; i < numero; i++) {
        suma += i;
    }
    return suma;
}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos