Die von der API bereitgestellte ** Ausnahmeklasse ** befindet sich in der folgenden Vererbungshierarchie.
Hier werden Ausnahmen speziell für Ausnahmen vom Ausnahmetyp behandelt.
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.
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 ...
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();
}
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.
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.
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.
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.
[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