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:
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();
}
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
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 "";
}
}
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();
}
}
S'il existe un moyen plus intelligent, veuillez commenter.
Recommended Posts