Commit 576344f6 authored by jg5dev's avatar jg5dev 💬
Browse files

better

parent 483c9c51
Loading
Loading
Loading
Loading
+26 −17
Original line number Diff line number Diff line
@@ -1718,29 +1718,38 @@ String description = switch (shape) {
};
```

## Gestió d'errors
## Gestió derrors

Java utilitza el concepte d’excepcions per manejar errors i situacions excepcionals durant l’execució del programa. Les excepcions es gestionen amb blocs `try`, `catch` i `finally`, i es poden generar manualment amb `throw`.
Java utilitza excepcions per gestionar errors durant l’execució. Hi ha dos tipus:

* **Checked** (verificades): el compilador obliga a capturar-les o declarar-les amb `throws`. Representen errors recuperables (ex. `IOException`).
* **Unchecked** (no verificades): subclasses de `RuntimeException`, el compilador no les exigeix capturar. Representen errors de programació (ex. `NullPointerException`).

### Captura d’excepcions

Les excepcions es gestionen amb `try`, `catch` i `finally`:

```java
try {
    int x = Integer.parseInt("abc");  // pot generar NumberFormatException
    int resultat = 10 / x;            // pot generar ArithmeticException
} catch (NumberFormatException e) {
    System.out.println("No s'ha introduït un nombre vàlid.");
    System.out.println("No sha introduït un nombre vàlid.");
} catch (ArithmeticException e) {
    System.out.println("No es pot dividir per zero.");
} finally {
    System.out.println("Aquest bloc s'executa sempre.");
    System.out.println("Aquest bloc sexecuta sempre.");
}
```

* `try`: inclou el codi que pot llençar una excepció.
* `catch`: captura i gestiona excepcions específiques. Es poden tenir diversos blocs `catch`.
* `finally`: (opcional) conté codi que s’executa sempre, hagi o no hagut excepció.
* L’objecte d’excepció capturat es pot utilitzar per obtenir informació addicional (`e.getMessage()`).
* `finally`: (opcional) s’executa sempre, hagi o no hagut excepció.
* L’objecte d’excepció capturat permet obtenir informació addicional (`e.getMessage()`).

### Llençar excepcions

Es poden generar excepcions manualment utilitzant `throw` per indicar errors específics:
Es poden generar excepcions manualment amb `throw`:

```java
public static int divideix(int a, int b) {
@@ -1751,7 +1760,7 @@ public static int divideix(int a, int b) {
}
```

Si un mètode pot llençar una excepció que no captura, cal declarar-ho amb `throws`:
Si un mètode pot llençar una excepció **checked** que no captura, cal declarar-ho amb `throws`:

```java
public static void llegirFitxer(String nomFitxer) throws IOException {
@@ -1759,15 +1768,15 @@ public static void llegirFitxer(String nomFitxer) throws IOException {
}
```

Excepcions comunes en Java:
### Excepcions comunes

| Excepció                         | Quan apareix                                        |
| -------------------------------- | --------------------------------------------------- |
| `NumberFormatException`          | Conversió de cadena a número no vàlida              |
| `ArithmeticException`            | Operació aritmètica invàlida (ex. dividir per zero) |
| `NullPointerException`           | Accedir a un objecte nul                            |
| `ArrayIndexOutOfBoundsException` | Índex fora de rang en un array                      |
| `IOException`                    | Errors d’entrada/sortida (fitxers, xarxa)           |
| Excepció                         | Tipus     | Quan apareix                                        |
| -------------------------------- | --------- | --------------------------------------------------- |
| `NumberFormatException`          | Unchecked | Conversió de cadena a número no vàlida              |
| `ArithmeticException`            | Unchecked | Operació aritmètica invàlida (ex. dividir per zero) |
| `NullPointerException`           | Unchecked | Accedir a un objecte nul                            |
| `ArrayIndexOutOfBoundsException` | Unchecked | Índex fora de rang en un array                      |
| `IOException`                    | Checked   | Errors d’entrada/sortida (fitxers, xarxa)           |

## Referències