Sobes.tech
Middle

Quelles sont les méthodes de traitement des exceptions vérifiées?

sobes.tech IA

Réponse de l'IA

  • Utiliser le bloc try-catch : permet d’intercepter une exception et de la traiter, évitant ainsi une terminaison inattendue du programme.
  • Déclarer qu’une méthode peut lancer une exception, en utilisant le mot-clé throws dans la signature de la méthode : cela transfère la responsabilité de la gestion au code appelant.
  • Envelopper une exception vérifiable dans une non vérifiable : permet de propager l’exception sans gestion explicite, mais peut masquer un problème réel.

Exemple d’utilisation de try-catch :

// Exemple d’utilisation de try-catch pour gérer une exception vérifiable
try {
    // Code pouvant lancer une exception vérifiable (par exemple, IOException)
    FileReader file = new FileReader("my_file.txt");
    // Travail avec le fichier...
} catch (IOException e) {
    // Gestion de l’exception IOException
    e.printStackTrace(); // Affiche la pile d’appels pour le débogage
    System.err.println("Erreur lors du travail avec le fichier : " + e.getMessage());
}

Exemple d’utilisation de throws :

// Exemple d’utilisation de throws dans la signature de la méthode
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Travail avec le fichier...
}

// Le code appelant doit gérer IOException ou la déclarer dans sa propre signature
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Erreur lors de la lecture du fichier : " + e.getMessage());
    }
}

Exemple d’enveloppement dans une exception non vérifiable :

// Exemple d’enveloppement d’une exception vérifiable dans une non vérifiable
public void unsafeOperation() {
    try {
        // Code pouvant lancer une exception vérifiable
        throw new IOException("Exemple IOException");
    } catch (IOException e) {
        // Transformation de l’exception vérifiable en une non vérifiable
        throw new RuntimeException("Une erreur a été détectée dans l’opération", e);
    }
}