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
- Bloc
try: Conté el codi que pot generar una excepció. - Bloc
catch: Conté el codi que gestiona l'excepció. - 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
-
Bloc
try:- Declarem un array
numbersamb tres elements. - Intentem accedir a l'element en la posició 5, que no existeix, la qual cosa genera una
ArrayIndexOutOfBoundsException.
- Declarem un array
-
Bloc
catch:- Captura l'excepció
ArrayIndexOutOfBoundsException. - Imprimeix un missatge d'error amb el detall de l'excepció.
- Captura 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
tryconté el codi que pot generar una excepció. - El bloc
catchgestiona l'excepció capturada. - El bloc
finallys'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
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
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
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection
