Réécrire Java try-catch avec facultatif

introduction

La syntaxe try-catch peut être utilisée lors de la gestion des exceptions, mais scala.util.Try peut être utilisée pour implémenter une implémentation de type fonction.

En Java, la classe Try ne peut pas être utilisée, mais si le contenu de l'exception ne vous intéresse pas, vous pouvez utiliser la classe Optional. Donc, dans cet article, je vais vous montrer comment convertir une API basée sur des exceptions en une API basée sur des options en Java.

Le public cible de cet article est:

Comment convertir une API basée sur les exceptions en API basée sur des options

Il cache try-catch dans la méthode et fournit une interface optionnelle pour le client.

    //Méthode pour obtenir l'heure de l'API Web
    public static Optional<String> getTime() {
        try {
            //Définissez l'URL de destination de la connexion et la méthode de connexion.
            URL url = new URL("http://api.aoikujira.com/time/get.php");
            ......
            ......
            return Optional.of(time.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return Optional.empty();
    }

Exemple de programme

Le programme qui acquiert l'heure actuelle de l'API Web et l'affiche a été implémenté des deux manières suivantes.

--Base d'exception --Base optionnelle

Programmes basés sur les exceptions

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
    public static void main(String[] args) {
        System.out.println(getTime());
    }

    //Méthode pour obtenir l'heure de l'API Web
    private static String getTime() {
        try {
            //Définissez l'URL de destination de la connexion et la méthode de connexion.
            URL url = new URL("http://api.aoikujira.com/time/get.php");
            HttpURLConnection http = (HttpURLConnection) url.openConnection();
            http.setRequestMethod("GET");
            http.connect();

            //Lisez la chaîne de caractères à partir de la destination de la connexion.
            BufferedReader reader = new BufferedReader(new InputStreamReader(http.getInputStream()));
            StringBuilder time = new StringBuilder();
            String line = "";
            while((line = reader.readLine()) != null)
                time.append(line);

            return time.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            reader.close();
        }

        return "";
    }
}

Programme optionnel

Réécrit pour que la méthode getTime () renvoie un type facultatif. Pour la routine principale (méthode principale), la méthode getTime () ressemble à une interface optionnelle.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        System.out.println(getTime().orElse(""));
    }

    //Méthode pour obtenir l'heure de l'API Web
    private static Optional<String> getTime() {
        try {
            //Définissez l'URL de destination de la connexion et la méthode de connexion.
            URL url = new URL("http://api.aoikujira.com/time/get.php");
            HttpURLConnection http = (HttpURLConnection) url.openConnection();
            http.setRequestMethod("GET");
            http.connect();

            //Lisez la chaîne de caractères à partir de la destination de la connexion.
            BufferedReader reader = new BufferedReader(new InputStreamReader(http.getInputStream()));
            StringBuilder time = new StringBuilder();
            String line = "";
            while((line = reader.readLine()) != null)
                time.append(line);
            reader.close();

            return Optional.of(time.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            reader.close();
        }

        return Optional.empty();
    }
}

en conclusion

S'il existe un moyen plus intelligent, veuillez commenter.

Recommended Posts

Réécrire Java try-catch avec facultatif
Comparez Java 8 en option avec Swift
Java Type facultatif
Étudier Java 8 (facultatif)
24 heures de difficulté avec le développement Android, Java en option
[Java] Mémorandum facultatif
Java 9 Facultatif :: stream
Installez java avec Homebrew
Changer de siège avec Java
Installez Java avec Ansible
Téléchargement confortable avec JAVA
Afficher la documentation Java de Java Facultatif
Changer java avec direnv
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
Conversion Endian avec JAVA
(Java) BDD facile avec Spectrum?
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Premiers pas avec Java Collection
Configuration Java avec Spring MVC
Authentification de base avec Java 11 HttpClient
Exécuter un lot avec docker-compose avec Java batch
[Template] Connexion MySQL avec Java
Installez Java 7 avec Homebrew (cask)
[Java] Communication JSON avec jackson
Java pour jouer avec Function
Essayez la connexion DB avec Java
Comment gérer les exceptions froidement avec Java 8 Stream ou en option
Comment utiliser java Facultatif
Activer Java EE avec NetBeans 9
[Java] JavaConfig avec classe interne statique
Essayez gRPC avec Java, Maven
Exploitons Excel avec Java! !!
[Java] À propos de la gestion des exceptions try-catch
Gestion des versions Java avec SDKMAN
Cryptage / décryptage RSA avec Java 8
Pagination de PDF avec Java + PDFBox.jar
Trier les chaînes comme une fonction caractéristique avec Java
Orienté objet avec Strike Gundam (java)
[Java] Acquisition de contenu avec HttpCliient
Gestion des versions Java avec jenv
Dépannage avec Java Flight Recorder
Rationalisez les tests Java avec Spock
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Erreur lors de la lecture avec java
Utilisation de Mapper avec Java (Spring)
Mémo d'étude Java 2 avec Progate
Premiers pas avec les bases de Java
Java8 pour démarrer maintenant ~ Facultatif ~
Affichage saisonnier avec commutateur Java
Utiliser SpatiaLite avec Java / JDBC
Étudier Java avec Progate Note 1
Analyse HTML (scraping) avec JAVA
Exécuter Java VM avec Web Assembly
Transition d'écran avec swing, java
Test unitaire Java avec Mockito