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
finally
quan sigui necessari: Utilitzafinally
per netejar recursos o executar codi que sempre ha de córrer. - 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
- 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