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
numbers
amb 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
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
- 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