Lancer

Types de données et exceptions en Java

Jim White

Java Developer

Options de gestion

  • Les exceptions vérifiées exigent une « prise en charge »
    • « Prendre en charge » les exceptions d'exécution est facultatif
  • Deux options pour « gérer »
    • Utiliser try et catch pour capter l'Exception et coder une solution
    • « Lancer » l'exception
  • Try/catch est la méthode privilégiée pour gérer une exception
    • Pas toujours possible; parfois mieux de centraliser la gestion des exceptions
Types de données et exceptions en Java

Mot-clé throws

  • Utilisez throws sur toute méthode pour renvoyer l'exception à l'appelant
    • Plutôt que de la gérer dans la méthode
    • Appelé « lancer une exception » ou « refiler la patate chaude »
    • Transférer à l'appelant la responsabilité de la gérer
  • Listez après throws les types d'exception, séparés par des virgules
    • Indique les types d'exceptions que la méthode appelante doit prévoir
public static void someMethod() throws IndexOutOfBoundsException, 
NegativeArraySizeException, NullPointerException {
  // method code
}
Types de données et exceptions en Java
Exemple avec throws

Try-catch normal pour gérer une Exception

public static void main(String[] args) {
  someMethod();
}
public static void someMethod(){
  try {
    ArrayList<String> games
      = new ArrayList<String>();
    games.add("Monopoly");
    games.add("Chess");
    games.get(3);
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "Oups – tentative d'obtenir un élément inexistant");
  }
}

Throws pour gérer une Exception

public static void main(String[] args) {
  try {
    someMethod();
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "someMethod a tenté d'obtenir un élément inexistant");
  }
}
public static void someMethod()
      throws IndexOutOfBoundsException {
  ArrayList<String> games
    = new ArrayList<String>();
  games.add("Monopoly");
  games.add("Chess");
  games.get(3);
}
Types de données et exceptions en Java

Quand utiliser throws

  • « Refiler la patate chaude » ou lancer une exception est à éviter
    • En général, mieux vaut try-catch là où elle survient
  • Motifs pour lancer plutôt que try-catch :
    • La méthode où l'exception se produit peut ignorer comment récupérer
    • Centraliser la gestion pour réduire le code try/catch redondant

Le lancement d'une exception s'emploie surtout avec des exceptions personnalisées

1 Photo from https://unsplash.com/@philipparosetite
Types de données et exceptions en Java

Catcher et relancer

  • Une Exception peut être « relancée »
    • Une méthode appelante utilise aussi throws au lieu d'un try/catch
  • Relancer depuis main arrêtera l'application

Les exceptions peuvent être relancées aux méthodes appelantes

Types de données et exceptions en Java

Exemple de relance

public class RethrowExample {
    public static void main(String[] args) {
        try {
            method1(0);
        } catch (ArithmeticException e) {
            System.out.println("Oups – quotient invalide tenté");
        }
    }
    public static void method1(int divisor) throws ArithmeticException {
        method2(divisor);
    }
    public static void method2 (int divisor) throws ArithmeticException {
        int z = 5/divisor;
        System.out.println(z);
    }
}
Types de données et exceptions en Java

Passons à la pratique !

Types de données et exceptions en Java

Preparing Video For Download...