El bloc try-catch és una estructura fonamental en Java per gestionar excepcions. Les excepcions són esdeveniments que interrompen el flux normal d'execució d'un programa. Utilitzant try-catch, podem capturar i gestionar aquestes excepcions de manera controlada, evitant que el programa es bloquegi inesperadament.

Conceptes Clau

  1. Bloc try: Conté el codi que pot generar una excepció.
  2. Bloc catch: Conté el codi que gestiona l'excepció.
  3. Excepcions: Són objectes que representen errors o condicions anòmales que es produeixen durant l'execució del programa.

Estructura Bàsica

try {
    // Codi que pot generar una excepció
} catch (ExceptionType e) {
    // Codi per gestionar l'excepció
}

Exemple Pràctic

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

public class TryCatchExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // Això generarà una ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("S'ha produït una excepció: " + e.getMessage());
        }
    }
}

Explicació del Codi

  1. Bloc try:

    • Declarem un array numbers amb tres elements.
    • Intentem accedir a l'element en la posició 5, que no existeix, la qual cosa genera una ArrayIndexOutOfBoundsException.
  2. Bloc catch:

    • Captura l'excepció ArrayIndexOutOfBoundsException.
    • Imprimeix un missatge d'error amb el detall de l'excepció.

Gestió de Múltiples Excepcions

És possible gestionar múltiples excepcions utilitzant diversos blocs catch.

public class MultipleCatchExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // Això generarà una ArrayIndexOutOfBoundsException
            int result = 10 / 0; // Això generarà una ArithmeticException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("S'ha produït una excepció d'índex fora de límits: " + e.getMessage());
        } catch (ArithmeticException e) {
            System.out.println("S'ha produït una excepció aritmètica: " + e.getMessage());
        }
    }
}

Bloc finally

El bloc finally s'executa sempre, independentment de si s'ha produït una excepció o no. És útil per alliberar recursos, com ara tancar fitxers o connexions de xarxa.

public class FinallyExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // Això generarà una ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("S'ha produït una excepció: " + e.getMessage());
        } finally {
            System.out.println("Aquest bloc s'executa sempre.");
        }
    }
}

Exercicis Pràctics

Exercici 1

Escriu un programa que demani a l'usuari que introdueixi dos números i mostri la seva divisió. Utilitza un bloc try-catch per gestionar possibles excepcions, com ara la divisió per zero.

Solució

import java.util.Scanner;

public class DivisionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("Introdueix el primer número: ");
            int num1 = scanner.nextInt();
            System.out.print("Introdueix el segon número: ");
            int num2 = scanner.nextInt();
            int result = num1 / num2;
            System.out.println("El resultat de la divisió és: " + result);
        } catch (ArithmeticException e) {
            System.out.println("Error: No es pot dividir per zero.");
        } finally {
            scanner.close();
        }
    }
}

Exercici 2

Escriu un programa que llegeixi un fitxer de text i mostri el seu contingut. Utilitza un bloc try-catch per gestionar possibles excepcions, com ara el fitxer no trobat.

Solució

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("example.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("Error: No s'ha pogut llegir el fitxer.");
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                System.out.println("Error: No s'ha pogut tancar el fitxer.");
            }
        }
    }
}

Resum

  • El bloc try-catch és essencial per gestionar excepcions en Java.
  • El bloc try conté el codi que pot generar una excepció.
  • El bloc catch gestiona l'excepció capturada.
  • El bloc finally s'executa sempre, independentment de si s'ha produït una excepció o no.
  • És possible gestionar múltiples excepcions utilitzant diversos blocs catch.

Amb aquests conceptes i exemples, hauríeu de ser capaços de gestionar excepcions en els vostres programes Java de manera efectiva.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats