[Java] Ausnahmetypen und grundlegende Verarbeitung

Ausnahmetypen und Korrespondenz

Die von der API bereitgestellte ** Ausnahmeklasse ** befindet sich in der folgenden Vererbungshierarchie.

Hier werden Ausnahmen speziell für Ausnahmen vom Ausnahmetyp behandelt.

Grundlegende Unterstützung mit try-catch

Die Ausnahmebehandlung kann in der Anweisung "try-catch" beschrieben werden.

try{
    FileWriter fw = new FileWriter("c:¥¥data.txt");
    fw.write("hellow!");
}catch(IOException e){
    System.exit();
}

Wenn Sie keine Ausnahmen behandeln, tritt im Ausnahmesystem der folgende Kompilierungsfehler auf.

Ausnahme Java.io.IOException wird nicht gemeldet.
Sie müssen einen Wurf fangen oder deklarieren, um ihn zu werfen.

(Ich habe es noch nicht gelesen) Fügen Sie den entsprechenden Teil mit "try-catch" oder "try-catch" bei Deklarieren Sie in der Methodendefinition throw IOException Der Anrufer muss Ausnahmen behandeln.

Fangen Sie abstrakt

Wenn Sie den bedingten Teil von catch wie "Exception e" schreiben, Catch Exception oder RuntimeException Ausnahmen. Die Nachkommenklassen der Exception-Klasse sollen grob erfasst werden.

try{
    FileWriter fw = new FileWriter("c:¥¥data.txt");
    fw.write("hellow!");
}catch(Exception e){
     System.out.println("Etwas ist schief gelaufen"); //Irgendwie ...
}

Ich weiß nicht, ob der Ausdruck "abstrakt fangen" richtig ist ...

Endlich angehängt

Wenn Sie schließlich nach dem Fang hinzufügen, Sie können den Prozess, den Sie ausführen möchten, unabhängig vom Auftreten einer Ausnahme festlegen. Zum Bereinigen, z. B. zum Schließen geöffneter Dateien und zum Schließen von Datenbank- und Netzwerkverbindungen.

try{
    FileWriter fw = new FileWriter("c:¥¥data.txt");
    fw.write("hellow!");
}catch(IOException e){
    System.out.println("Etwas ist schief gelaufen");
}finally{
    fw.close();
}

Automatisch schließen ()

Wenn das Schreiben des finally-Blocks mühsam ist, schreiben Sie im ersten Versuch "()".

try(
    FileWriter fw = new FileWriter("c:¥¥data.txt");
){
    fw.write("hellow!");
}catch(IOException e){
    System.out.println("Etwas ist schief gelaufen");
}

Wenn Sie dies tun, scheint es, dass die erste geöffnete data.txt automatisch geschlossen () wird. Es ist jedoch auf Typen beschränkt, die die Schnittstelle "java.lang.AutoCloseable" implementieren.

wirft Deklaration

Schreiben Sie beim Deklarieren mit einer Methode wie folgt.

** ... Methodenname löst Ausnahmeklasse 1, Ausnahmeklasse 2, ... ** aus

Sub.java


public class Sub{
    public static void subsub() throws IOException{
         FileWriter fw = new FileWriter("date.txt");
         fw.write("hello!");
    }
}

Main.java


public class Main{
    public static void main(Strgin[] args){
        try{
            //Es gibt verschiedene Prozesse ...
            subsub();
        }catch(IOException e){
            System.exit();
        }
    }
}

Weil es nicht von der aufgerufenen Subsub-Methode verarbeitet wird Es fühlt sich an wie die Verarbeitung mit der Hauptmethode des Anrufers.

Würfe werden auch verwendet, um Ausnahmen zu werfen.

Eine Ausnahme auslösen

Schreiben Sie wie folgt. Beachten Sie, dass es sich um eine Singularform handelt.

** Ausnahmeinstanz auslösen; **

Oder

** Ausnahmeinstanz auslösen ("Fehlermeldung"); **

Person.java


Public class Person{
    int age;
    public class setAge(int Age){
        if(age <= 0){
        //Wenn es 0 oder weniger ist
            throw new IllgalArgumentExeception("Das Alter sollte eine positive Zahl sein. Spezifizierter Wert=" + age);
        }
        //Wenn es eine positive Zahl ist
        this.age = age;
    }
}

Main.java


public class Main{
    public static void main(String[] args){
        Person p = new Person();
        p.setAge(-128); //Versuchen Sie nun, den falschen Wert einzustellen.
    }
}

Als Ausführungsergebnis

Exception in thread "main" java.lang.IllegalArgumentException:Das Alter sollte eine positive Zahl sein. Spezifizierter Wert=-128
  at Person.setAge(Person.java:6)
  at Main.main(Main.java:4)

Die throw-Anweisung löst eine IllegalArgumentException-Instanz aus und meldet sie an die JVM. Die Ausnahme wird auf die Hauptmethode geworfen, aber hier beendet die JVM schließlich das Programm, weil sie die Ausnahme nicht abgefangen hat.

Definition der ursprünglichen Ausnahmeklasse

Sie können Ihre eigene Ausnahmeklasse erstellen, indem Sie die vorhandene Ausnahmeklasse erben. Die Herstellungsmethode ist dieselbe wie die allgemeine Vererbungsmethode.

Zum Beispiel, wenn Sie ein Programm zum Lesen von Dokumenten oder Ähnlichem entwickeln Ich möchte eine Ausnahmebehandlung beim Lesen einer nicht unterstützten Dokumentdatei ...

UnsupportedDocumentFileException.java


public class UnsupportedDocumentFileException extends Exception{
    public UnsupportedDocumentFileException(String){
        //Konstruktor, der eine Fehlermeldung empfängt
        super(msg);
    }
}

Main.java


public class Main{
    public static void main(String[] args){
        try{
            //Eine Ausnahme probeweise auslösen... 
            throw new UnsupportedDocumentFileException
                ("Dies ist eine nicht unterstützte Dokumentdatei");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

Exception.printStackTrace () gibt die folgenden Informationen aus.

--Klassenname der ausgelösten Ausnahme

Praktisch.

Nachschlagewerk

[Einführung in Java 2nd Edition] (https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X) Pp.562-595

Recommended Posts

[Java] Ausnahmetypen und grundlegende Verarbeitung
[Java] Grundtypen und Anweisungshinweise
Grundlegende Datentypen und Referenztypen (Java)
Java-Basisdatentypen und Referenztypen
Java-Grunddatentypen
Informationen zum Java-Grunddatentyp- und Referenztypspeicher
Deklaration, Initialisierung und Typen von Java-Variablen
Java Primer Series (Variationen und Typen)
[Java] Schleifenverarbeitung und Tabelle von neunundneunzig
Grundlegender Verarbeitungsablauf von Java Stream
[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)
[Einführung in Java] Informationen zu Variablendeklarationen und -typen
Java-Ausnahmebehandlung?
Grundlegende Java-Grammatik
Grundlegende Java-Grammatik
[Java] Ausnahmeinstanz
Java Grundkenntnisse 1
Java-Thread-Verarbeitung
[Java] Grundstruktur
[Java] [Basic] Glossar
Java-String-Verarbeitung
Grundlegende Java-Grammatik
Java und JavaScript
XXE und Java
Grundlegende Java-Grammatik
[Java] Ausnahmebehandlung
☾ Java / Ausnahmebehandlung
Informationen zur Behandlung von Java-Ausnahmen
[Java] Multithread-Verarbeitung
Behandlung von Java-Ausnahmen
Java-Übung [Basic]
[Java] Stream-Verarbeitung
Java iterativer Prozess
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Informationen zu Java-Datentypen (insbesondere primitiven Typen) und Literalen
[Verarbeitung × Java] Datentyp und objektorientierte Programmierung
Fragen in Java-Ausnahmebehandlung werfen und versuchen-fangen
Getter und Setter (Java)
[Java] Arten von Kommentaren und wie man sie schreibt
[Java] Thread und ausführbar
Java wahr und falsch
[Java] Wirf eine Ausnahme aus
Java Grundwissen Memo
Linkverarbeitung und SQLite
[Java] Vergleich von Zeichenketten und && und ||
[Java] Datentyp ①-Basistyp
Grundlegende Java-Datumsmanipulation
Java Review ① (Entwicklungsschritte, grundlegende Grammatik, Variablen, Datentypen)
Grundlegende Java-Namenskonventionen
Java-Lernnotiz (grundlegend)
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
timedatectl und Java TimeZone
JAVA-Konstruktoraufrufverarbeitung
[Java] Verzweigen und Wiederholen
[Java] Hauptdatentypen
[Java Silver] (Ausnahmebehandlung) Informationen zu den Anweisungen try-catch-finally und try-with-resource
Java zufällig, verschiedene Verarbeitung
Äquivalenter Vergleich von Java-Wrapper-Klasse und primitivem Typ