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
- try: Bloca de codi on es col·loca el codi que pot generar un error.
- catch: Bloca de codi que s'executa si es produeix un error en el bloc
try. - 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ó
- try: Intenta executar el codi que pot generar un error.
- throw: Genera un error personalitzat si
bés zero. - catch: Captura l'error i mostra un missatge a la consola.
- 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
- No capturar errors adequadament: Assegura't de proporcionar missatges d'error clars i útils.
- No utilitzar
finallyquan sigui necessari: Utilitzafinallyper netejar recursos o executar codi que sempre ha de córrer. - Generar errors innecessaris: No utilitzis
throwper 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
- Què és JavaScript?
- Configuració del Teu Entorn de Desenvolupament
- El Teu Primer Programa en JavaScript
- Sintaxi i Conceptes Bàsics de JavaScript
- Variables i Tipus de Dades
- Operadors Bàsics
Mòdul 2: Estructures de Control
- Declaracions Condicionals
- Bucles: for, while, do-while
- Declaracions Switch
- Gestió d'Errors amb try-catch
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Expressions de Funció i Funcions Fletxa
- Paràmetres i Valors de Retorn
- Àmbit i Tancaments
- Funcions d'Ordre Superior
Mòdul 4: Objectes i Arrays
- Introducció als Objectes
- Mètodes d'Objecte i Paraula Clau 'this'
- Arrays: Conceptes Bàsics i Mètodes
- Iteració sobre Arrays
- Desestructuració d'Arrays
Mòdul 5: Objectes i Funcions Avançades
- Prototips i Herència
- Classes i Programació Orientada a Objectes
- Mòduls i Importació/Exportació
- JavaScript Asíncron: Callbacks
- Promeses i Async/Await
Mòdul 6: El Model d'Objectes del Document (DOM)
- Introducció al DOM
- Selecció i Manipulació d'Elements del DOM
- Gestió d'Esdeveniments
- Creació i Eliminació d'Elements del DOM
- Gestió i Validació de Formularis
Mòdul 7: APIs del Navegador i Temes Avançats
- Emmagatzematge Local i de Sessió
- Fetch API i AJAX
- WebSockets
- Service Workers i Aplicacions Web Progressives (PWAs)
- Introducció a WebAssembly
Mòdul 8: Proves i Depuració
- Depuració de JavaScript
- Proves Unitàries amb Jest
- Proves d'Integració
- Proves de Cap a Cap amb Cypress
Mòdul 9: Rendiment i Optimització
- Optimització del Rendiment de JavaScript
- Gestió de Memòria
- Manipulació Eficient del DOM
- Càrrega Per Mandat i Divisió de Codi
Mòdul 10: Frameworks i Llibreries de JavaScript
- Introducció a React
- Gestió d'Estat amb Redux
- Conceptes Bàsics de Vue.js
- Conceptes Bàsics d'Angular
- Triar el Framework Adequat
