Die Try-Catch-Syntax kann bei der Behandlung von Ausnahmen verwendet werden, scala.util.Try kann jedoch zum Implementieren einer funktionsähnlichen Implementierung verwendet werden.
In Java kann die Try-Klasse nicht verwendet werden. Wenn Sie jedoch nicht an den Ausnahmeinhalten interessiert sind, können Sie die Option-Klasse verwenden. In diesem Artikel werde ich Ihnen zeigen, wie Sie eine ausnahmebasierte API in eine optionale API in Java konvertieren.
Die Zielgruppe für diesen Artikel ist:
Es verbirgt Try-Catch in der Methode und bietet eine optionale Schnittstelle für den Client.
//Methode zum Abrufen der Zeit von der Web-API
public static Optional<String> getTime() {
try {
//Legen Sie die URL des Verbindungsziels und die Verbindungsmethode fest.
URL url = new URL("http://api.aoikujira.com/time/get.php");
......
......
return Optional.of(time.toString());
} catch (IOException e) {
e.printStackTrace();
}
return Optional.empty();
}
Das Programm, das die aktuelle Zeit von der Web-API abruft und anzeigt, wurde auf zwei Arten implementiert.
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());
}
//Methode zum Abrufen der Zeit von der Web-API
private static String getTime() {
try {
//Legen Sie die URL des Verbindungsziels und die Verbindungsmethode fest.
URL url = new URL("http://api.aoikujira.com/time/get.php");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setRequestMethod("GET");
http.connect();
//Lesen Sie die Zeichenfolge vom Verbindungsziel.
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 "";
}
}
Umgeschrieben, sodass die Methode getTime () einen optionalen Typ zurückgibt. Für die Hauptroutine (Hauptmethode) sieht die Methode getTime () wie eine optionale Schnittstelle aus.
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(""));
}
//Methode zum Abrufen der Zeit von der Web-API
private static Optional<String> getTime() {
try {
//Legen Sie die URL des Verbindungsziels und die Verbindungsmethode fest.
URL url = new URL("http://api.aoikujira.com/time/get.php");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setRequestMethod("GET");
http.connect();
//Lesen Sie die Zeichenfolge vom Verbindungsziel.
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();
}
}
Wenn es einen intelligenteren Weg gibt, kommentieren Sie bitte.
Recommended Posts