Schreiben Sie Java Try-Catch mit Optional neu

Einführung

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:

So konvertieren Sie eine ausnahmebasierte API in eine optionale API

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();
    }

Beispielprogramm

Das Programm, das die aktuelle Zeit von der Web-API abruft und anzeigt, wurde auf zwei Arten implementiert.

Ausnahmebasierte Programme

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 "";
    }
}

Optionales Programm

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();
    }
}

abschließend

Wenn es einen intelligenteren Weg gibt, kommentieren Sie bitte.

Recommended Posts

Schreiben Sie Java Try-Catch mit Optional neu
Vergleichen Sie Java 8 Optional mit Swift
Java Optionaler Typ
Java 8 studieren (optional)
24 Stunden mit Android-Entwicklung zu kämpfen, Java Optional
[Java] Optionales Memorandum
Java 9 Optional :: stream
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Java-Dokument von Java anzeigen Optional
Schalten Sie Java mit direnv
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Endian-Konvertierung mit JAVA
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Versuchen Sie eine DB-Verbindung mit Java
So behandeln Sie Ausnahmen mit Java 8 Stream oder Optional kühl
Verwendung von Java Optional
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Versuchen Sie gRPC mit Java, Maven
Lassen Sie uns Excel mit Java betreiben! !!
[Java] Informationen zur Behandlung von Try-Catch-Ausnahmen
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Paging PDF mit Java + PDFBox.jar
Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java
Objektorientiert mit Strike Gundam (Java)
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Fehlerbehebung mit Java Flight Recorder
Optimieren Sie Java-Tests mit Spock
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Verwenden von Mapper mit Java (Spring)
Java Study Memo 2 mit Progate
Erste Schritte mit Java Basics
Java8 startet jetzt ~ Optional ~
Saisonale Anzeige mit Java-Schalter
Verwenden Sie SpatiaLite mit Java / JDBC
Lernen von Java mit Progate Note 1
HTML-Analyse (Scraping) mit JAVA
Führen Sie Java VM mit Web Assembly aus
Bildschirmübergang mit Swing, Java
Java Unit Test mit Mockito