[Java] Gestion des exceptions

Qu'est-ce que la gestion des exceptions?

essayez ... capturez la syntaxe

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TryBasic {

  public static void main(String[] args) {
    try {
      var in = new FileInputStream("C:/data/nothing.gif");
      var data = -1;
      while ((data = in.read()) != -1) {
        System.out.printf("%02X ", data);
      }
    //Lancer une exception FileNotFoundException dans la classe FileInputStream
    } catch (FileNotFoundException e) {
      System.out.println("Le fichier est introuvable.");
    } catch (IOException e) {
      //Accédez à l'objet d'exception via la variable d'exception spécifiée (e)
      e.printStackTrace();
    }
  }
}

Trace de la pile

enfin bloquer

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TryFinally {

  public static void main(String[] args) {
    FileInputStream in = null;
    try {
      in = new FileInputStream("C:/data/nothing.gif");
      var data = -1;
      while ((data = in.read()) != -1) {
        System.out.printf("%02X ", data);
      }
    } catch (FileNotFoundException e) {
      System.out.println("Le fichier est introuvable.");
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      //Fermeture de dossier avec ou sans exception
      try {
        if (in != null) {
          in.close();
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

syntaxe try-with-resource

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TryWithResources {

//Déclaration de ressource au début du bloc
  public static void main(String[] args) {
    try (var in = new FileInputStream("C:/data/hogee.gif")) {
      var data = -1;
      while ((data = in.read()) != -1) {
        System.out.printf("%02X ", data);
      }
    //Libération automatique des ressources lors de la sortie du bloc try
    } catch (FileNotFoundException e) {
      System.out.println("Fichier non trouvé.");
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Structure hiérarchique des classes d'exceptions

Remarques sur la gestion des exceptions

//Prise multiple
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class TryMulti {

  public static void main(String[] args) {
    try {
      var in = new FileInputStream("C:/data/nasi.gif");
      var data = -1;
      while ((data = in.read()) != -1) {
        System.out.printf("%02X ", data);
      }
      var uri = new URI( "https://www.neko.example.com");
      System.out.println(uri.toString());
    //Prise multiple
    } catch (IOException | URISyntaxException e) {
      System.out.println("Impossible d'accéder au fichier.");
      e.printStackTrace();
    }
  }
}

Lancer une exception

public FileInputStream(File file) throws FileNotFoundException{
//Abréviation

Exception lancer l'attention

public class AssertBasic {
  private static double getTrapezoidArea(double upper, double lower, double height) {
    //Une exception se produit lorsque l'argument est égal ou inférieur à 0
    assert upper > 0 && lower > 0 && height > 0;
    return (upper + lower) * height / 2;
  }
  public static void main(String[] args) {
    System.out.println(AssertBasic.getTrapezoidArea(-2, 4, 0));
  }
}

Relance d'exception

public class TryRethrow {
//MySampleException,La méthode de relance peut se produire dans MyLibException
  public static void rethrow(boolean flag) throws MySampleException, MyLibException {
    try {
      if (flag) {
        throw new MySampleException();
      } else {
        throw new MyLibException();
      }
    //Recevoir avec le type d'exception et relancer tel quel
    } catch (Exception e) {
      throw e;
    }
  }
}

Exception de traduction


import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Paths;

//Il vous suffit de connaître MySampleException en tant qu'exception de traduction
public class UseTrans {
  public void readHttpPages() throws MySampleException {
    try (var reader = Files.newBufferedReader(Paths.get("C:/data/link.txt"))) {
      var line = "";
      while ((line = reader.readLine()) != null) {
        var client = HttpClient.newHttpClient();
        var req = HttpRequest.newBuilder().uri(URI.create(line)).build();
        var res = client.send(req, HttpResponse.BodyHandlers.ofString());
        System.out.println(res.body());
      }
    } catch (IOException | InterruptedException e) {
      throw new MySampleException(e);
    }
  }
}

Classe d'exception propriétaire

//Inherit Exception (classe dérivée)
public class MySampleException extends Exception {
  //Remplacer le constructeur
  public MySampleException() {
    super();
  }
  public MySampleException(String message) {
    super(message);
  }
  public MySampleException(String message, Throwable cause) {
    super(message, cause);
  }
  public MySampleException(Throwable cause) {
    super(cause);
  }
}

Recommended Posts

Gestion des exceptions Java?
[Java] Gestion des exceptions
☾ Java / Gestion des exceptions
À propos de la gestion des exceptions Java
Gestion des exceptions Java
Gestion des exceptions
Exception de traitement des exceptions
[Java] Pratique de la gestion des exceptions [Exception]
[Java] À propos de la gestion des exceptions try-catch
Règles d'utilisation pour la gestion des exceptions Java
Techniques de gestion des exceptions en Java
À propos de la gestion des exceptions
[Session d'étude interne] Gestion des exceptions Java (2017/04/26)
[Java] Instance d'exception
Gestion des exceptions Ruby
Compréhension étape par étape de la gestion des exceptions Java
[Pour les débutants en Java] À propos de la gestion des exceptions
Java (gestion des exceptions, threading, collection, fichier IO)
gestion des exceptions try-catch-finally Comment utiliser java
À propos de la gestion des exceptions Ruby
Pratique de gestion des exceptions (ArithmeticException)
[java] Lancer une exception
Gestion des exceptions Spring Boot
Questions sur la gestion des exceptions Java throw et try-catch
Contenu d'apprentissage de base Java 7 (exception)
[Ruby] Gestion des exceptions dans les fonctions
exception
Java
[Java Silver] (Gestion des exceptions) À propos des instructions try-catch-finally et try-with-resource
Java
Gestion des fuseaux horaires avec Java
[Rails] Comment écrire la gestion des exceptions?
[Note] Gestion des points décimaux Java
Exception inattendue lors de l'utilisation de DateTimeFormatter de Java
[Java] Qu'est-ce que l'exception de modification simultanée?
Gestion des exceptions avec une interface fluide
[Java] Types d'exception et traitement de base
(Mémo d'apprentissage) Mesures Java de 2e année: points principaux du 4e trimestre (gestion des exceptions)
[Introduction à Java] À propos de la gestion des exceptions (try-catch-finally, exception vérifiée, exception non vérifiée, throws, throw)
Tirez parti de l'un ou l'autre pour la gestion des exceptions individuelles dans l'API Java Stream
Étudier Java ―― 3
[Java] tableau
Java protégé
[Java] Annotation
Module [Java]
Tableau Java
Étudier Java ―― 9
Java scratch scratch
Astuces Java, astuces
Méthodes Java
Méthode Java
java (constructeur)
Tableau Java
[Java] ArrayDeque
java (remplacement)
java (méthode)
Journée Java 2018
Chaîne Java
java (tableau)
Java statique