Les excepcions són una part fonamental de la programació en Java, ja que permeten gestionar errors i situacions inesperades de manera controlada. En aquest tema, aprendrem què són les excepcions, com funcionen i com podem utilitzar-les per millorar la robustesa i la fiabilitat del nostre codi.

Què és una Excepció?

Una excepció és un esdeveniment que interromp el flux normal d'execució d'un programa. Aquest esdeveniment pot ser causat per diverses raons, com ara errors de programació, problemes amb l'entrada/sortida, o altres situacions inesperades.

Tipus d'Excepcions

En Java, les excepcions es classifiquen en dues categories principals:

  1. Excepcions Verificades (Checked Exceptions):

    • Aquestes excepcions es comproven en temps de compilació.
    • El programador ha de gestionar-les explícitament utilitzant blocs try-catch o declarant-les amb throws.
    • Exemple: IOException, SQLException.
  2. Excepcions No Verificades (Unchecked Exceptions):

    • Aquestes excepcions es comproven en temps d'execució.
    • No és obligatori gestionar-les explícitament.
    • Exemple: NullPointerException, ArrayIndexOutOfBoundsException.

Jerarquia de les Excepcions

La classe base de totes les excepcions en Java és java.lang.Throwable. Aquesta classe té dues subclasses principals:

  • Error: Representa errors greus que normalment no poden ser gestionats pel programa (per exemple, OutOfMemoryError).
  • Exception: Representa condicions que un programa pot voler gestionar (per exemple, IOException).

La jerarquia es pot representar de la següent manera:

java.lang.Throwable
    ├── java.lang.Error
    └── java.lang.Exception
        ├── java.lang.RuntimeException
        └── altres excepcions verificades

Maneig d'Excepcions

Blocs Try-Catch

El bloc try-catch s'utilitza per capturar i gestionar excepcions. La sintaxi bàsica és la següent:

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

Exemple Pràctic

A continuació, es mostra un exemple pràctic de com utilitzar un bloc try-catch per gestionar una excepció:

public class ExceptionExample {
    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("Error: Intentant accedir a un índex fora dels límits de l'array.");
        }
    }
}

Explicació del Codi

  1. Bloc try: Conté el codi que pot generar una excepció. En aquest cas, estem intentant accedir a un índex fora dels límits de l'array.
  2. Bloc catch: Captura l'excepció generada i executa el codi per gestionar-la. Aquí, simplement imprimim un missatge d'error.

Exercicis Pràctics

Exercici 1

Escriu un programa que demani a l'usuari que introdueixi dos números i mostri el resultat de la seva divisió. Gestiona la possible excepció ArithmeticException que es pot produir si l'usuari introdueix un zero com a divisor.

Solució

import java.util.Scanner;

public class DivisionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Introdueix el primer número: ");
        int num1 = scanner.nextInt();
        System.out.print("Introdueix el segon número: ");
        int num2 = scanner.nextInt();

        try {
            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.");
        }
    }
}

Exercici 2

Escriu un programa que llegeixi un fitxer de text i mostri el seu contingut per pantalla. Gestiona la possible excepció FileNotFoundException que es pot produir si el fitxer no existeix.

Solució

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FileReadExample {
    public static void main(String[] args) {
        try {
            File file = new File("example.txt");
            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("Error: El fitxer no s'ha trobat.");
        }
    }
}

Resum

En aquesta secció, hem après què són les excepcions, la seva jerarquia i com gestionar-les utilitzant blocs try-catch. Les excepcions són una eina poderosa per millorar la robustesa del nostre codi, permetent-nos gestionar errors i situacions inesperades de manera controlada. En els següents temes, aprofundirem en altres aspectes de la gestió d'excepcions, com ara el bloc finally i la creació d'excepcions personalitzades.

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