[Java] Ausnahmebehandlung

Was ist Ausnahmebehandlung?

versuchen Sie ... die Syntax zu fangen

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);
      }
    //Lösen Sie eine FileNotFoundException-Ausnahme in der FileInputStream-Klasse aus
    } catch (FileNotFoundException e) {
      System.out.println("Die Datei wurde nicht gefunden.");
    } catch (IOException e) {
      //Greifen Sie über die angegebene Ausnahmevariable (e) auf das Ausnahmeobjekt zu.
      e.printStackTrace();
    }
  }
}

Stapelspur

endlich blockieren

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("Die Datei wurde nicht gefunden.");
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      //Datei schließen mit oder ohne Ausnahme
      try {
        if (in != null) {
          in.close();
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

Try-with-Resource-Syntax

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

public class TryWithResources {

//Ressourcendeklaration am Anfang des Blocks
  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);
      }
    //Automatische Ressourcenfreigabe beim Beenden des Try-Blocks
    } catch (FileNotFoundException e) {
      System.out.println("Datei nicht gefunden.");
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Hierarchische Struktur von Ausnahmeklassen

Hinweise zur Ausnahmebehandlung

//Mehrfachfang
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());
    //Mehrfachfang
    } catch (IOException | URISyntaxException e) {
      System.out.println("Zugriff auf die Datei nicht möglich.");
      e.printStackTrace();
    }
  }
}

Eine Ausnahme auslösen

public FileInputStream(File file) throws FileNotFoundException{
//Abkürzung

Ausnahme werfen Aufmerksamkeit

public class AssertBasic {
  private static double getTrapezoidArea(double upper, double lower, double height) {
    //Eine Ausnahme tritt auf, wenn das Argument 0 oder weniger ist
    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));
  }
}

Ausnahme neu werfen

public class TryRethrow {
//MySampleException,Die Rethrow-Methode kann in MyLibException auftreten
  public static void rethrow(boolean flag) throws MySampleException, MyLibException {
    try {
      if (flag) {
        throw new MySampleException();
      } else {
        throw new MyLibException();
      }
    //Empfangen Sie mit Ausnahmetyp und werfen Sie erneut, wie es ist
    } catch (Exception e) {
      throw e;
    }
  }
}

Übersetzungsausnahme


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;

//Sie müssen MySampleException nur als Übersetzungsausnahme kennen
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);
    }
  }
}

Proprietäre Ausnahmeklasse

//Ausnahme erben (abgeleitete Klasse)
public class MySampleException extends Exception {
  //Konstruktor überschreiben
  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

Java-Ausnahmebehandlung?
[Java] Ausnahmebehandlung
☾ Java / Ausnahmebehandlung
Informationen zur Behandlung von Java-Ausnahmen
Behandlung von Java-Ausnahmen
Ausnahmebehandlung
Ausnahmebehandlung Ausnahme
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
[Java] Informationen zur Behandlung von Try-Catch-Ausnahmen
Verwendungsregeln für die Behandlung von Java-Ausnahmen
Ausnahmebehandlungstechniken in Java
Informationen zur Ausnahmebehandlung
[Inhouse-Studiensitzung] Behandlung von Java-Ausnahmen (26.04.2017)
[Java] Ausnahmeinstanz
Ruby-Ausnahmebehandlung
Schrittweises Verständnis der Behandlung von Java-Ausnahmen
[Für Java-Anfänger] Informationen zur Ausnahmebehandlung
Java (Ausnahmebehandlung, Threading, Sammlung, Datei-E / A)
try-catch-finally Ausnahmebehandlung Verwendung von Java
Informationen zur Behandlung von Ruby-Ausnahmen
Praxis der Ausnahmebehandlung (ArithmeticException)
[Java] Wirf eine Ausnahme aus
Spring Boot-Ausnahmebehandlung
Fragen in Java-Ausnahmebehandlung werfen und versuchen-fangen
Java Basic Learning Content 7 (Ausnahme)
[Ruby] Ausnahmebehandlung in Funktionen
Ausnahme
Java
[Java Silver] (Ausnahmebehandlung) Informationen zu den Anweisungen try-catch-finally und try-with-resource
Java
Umgang mit Zeitzonen mit Java
[Rails] Wie schreibe ich eine Ausnahmebehandlung?
[Hinweis] Behandlung von Java-Dezimalstellen
Unerwartete Ausnahme bei Verwendung von DateTimeFormatter in Java
[Java] Was ist die Ausnahme für gleichzeitige Änderungen?
Ausnahmebehandlung mit einer Fluidschnittstelle
[Java] Ausnahmetypen und grundlegende Verarbeitung
(Lernnotiz) Java 2. Klasse Maßnahmen: Q4 Hauptpunkte (Ausnahmebehandlung)
[Einführung in Java] Informationen zur Ausnahmebehandlung (try-catch-finally, aktivierte Ausnahme, nicht aktivierte Ausnahme, Würfe, Würfe)
Nutzen Sie entweder für die individuelle Ausnahmebehandlung in der Java Stream-API
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Java (Konstruktor)
Java-Array
[Java] ArrayDeque
Java (überschreiben)
Java (Methode)
Java Day 2018
Java-Zeichenfolge
Java (Array)
Java statisch