La gestió d'errors és una part essencial de la programació, ja que permet que les aplicacions siguin més robustes i manejin situacions inesperades de manera controlada. En JavaScript, la instrucció try-catch és una eina poderosa per gestionar errors.

Conceptes Clau

  1. try: Bloca de codi on es col·loca el codi que pot generar un error.
  2. catch: Bloca de codi que s'executa si es produeix un error en el bloc try.
  3. finally (opcional): Bloca de codi que s'executa sempre, independentment de si es produeix un error o no.

Sintaxi Bàsica

try {
    // Codi que pot generar un error
} catch (error) {
    // Codi per gestionar l'error
} finally {
    // Codi que s'executa sempre
}

Exemple Pràctic

Vegem un exemple pràctic per entendre millor com funciona try-catch.

Exemple 1: Divisió per Zero

function divide(a, b) {
    try {
        if (b === 0) {
            throw new Error("No es pot dividir per zero");
        }
        return a / b;
    } catch (error) {
        console.error("S'ha produït un error: " + error.message);
    } finally {
        console.log("Operació de divisió finalitzada.");
    }
}

console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // S'ha produït un error: No es pot dividir per zero
                            // Operació de divisió finalitzada.

Explicació

  1. try: Intenta executar el codi que pot generar un error.
  2. throw: Genera un error personalitzat si b és zero.
  3. catch: Captura l'error i mostra un missatge a la consola.
  4. finally: S'executa sempre, independentment de si hi ha un error o no.

Exercicis Pràctics

Exercici 1: Gestió d'Errors en la Conversió de Nombres

Escriu una funció que converteixi una cadena a un nombre. Si la cadena no es pot convertir, la funció ha de generar un error i gestionar-lo amb try-catch.

function convertToNumber(str) {
    try {
        let num = Number(str);
        if (isNaN(num)) {
            throw new Error("La cadena no es pot convertir a un nombre");
        }
        return num;
    } catch (error) {
        console.error("Error: " + error.message);
    } finally {
        console.log("Conversió finalitzada.");
    }
}

// Prova la funció
console.log(convertToNumber("123")); // 123
console.log(convertToNumber("abc")); // Error: La cadena no es pot convertir a un nombre
                                     // Conversió finalitzada.

Exercici 2: Lectura d'un Objecte

Escriu una funció que accedeixi a una propietat d'un objecte. Si la propietat no existeix, la funció ha de generar un error i gestionar-lo amb try-catch.

function getProperty(obj, prop) {
    try {
        if (!obj.hasOwnProperty(prop)) {
            throw new Error("La propietat no existeix");
        }
        return obj[prop];
    } catch (error) {
        console.error("Error: " + error.message);
    } finally {
        console.log("Lectura de propietat finalitzada.");
    }
}

// Prova la funció
let person = { name: "Joan", age: 30 };
console.log(getProperty(person, "name")); // Joan
console.log(getProperty(person, "address")); // Error: La propietat no existeix
                                            // Lectura de propietat finalitzada.

Errors Comuns i Consells

  1. No capturar errors adequadament: Assegura't de proporcionar missatges d'error clars i útils.
  2. No utilitzar finally quan sigui necessari: Utilitza finally per netejar recursos o executar codi que sempre ha de córrer.
  3. Generar errors innecessaris: No utilitzis throw per a errors trivials que es poden gestionar d'una altra manera.

Resum

La gestió d'errors amb try-catch és una tècnica essencial per fer que les aplicacions JavaScript siguin més robustes i fiables. Hem après com utilitzar try, catch, finally i throw per gestionar errors de manera efectiva. També hem vist exemples pràctics i exercicis per reforçar aquests conceptes.

En el següent mòdul, explorarem les funcions en JavaScript, incloent-hi la seva definició, crida, expressions de funció i funcions fletxa.

JavaScript: De Principiant a Avançat

Mòdul 1: Introducció a JavaScript

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Objectes i Arrays

Mòdul 5: Objectes i Funcions Avançades

Mòdul 6: El Model d'Objectes del Document (DOM)

Mòdul 7: APIs del Navegador i Temes Avançats

Mòdul 8: Proves i Depuració

Mòdul 9: Rendiment i Optimització

Mòdul 10: Frameworks i Llibreries de JavaScript

Mòdul 11: Projecte Final

© Copyright 2024. Tots els drets reservats