Kapitel 12: Ausnahmebehandlung und Text-E / A.
1. Übersicht über die Ausnahmebehandlung
1. Funktion Die
Ausnahmebehandlung ermöglicht es dem Programm, mit unerwarteten Situationen umzugehen und den normalen Betrieb fortzusetzen
2. In Java werden Laufzeitfehler als Ausnahmen behandelt, und Ausnahmen sind ein Objekt
3. Die Ausnahme wird von der Methode ausgelöst, der Aufrufer der Methode fängt die Ausnahme ab und behandelt sie
try{
//正常情况下的运行情况
}
catch(type ex){
//type:捕获的异常类型 ex:catch块的参数
//处理异常
}
2. Ausnahmetyp
1. Systemfehler
2. Ausnahmen sind Objekte, und Objekte werden durch Klassen definiert. Die Stammklasse der Ausnahme ist java.long.Throwable.
Sie können auch Ihre eigene Ausnahmeklasse erstellen, indem Sie die Exception-Klasse oder die Unterklasse von Exception erben
3. Häufige Ausnahmen
abnormal | Beschreibung |
---|---|
ArrayIndexOutOfBountsException | Array außerhalb der Grenzen |
InputMisMatchException | Wenn Sie eine Ganzzahl eingeben, geben Sie diese als Gleitkommazahl ein |
Arthmetische Ausnahme | 0 als Divisor (eine durch 0 geteilte Gleitkommazahl erzeugt keine Ausnahme ) |
IllegalArgamentException | Unzulässige oder unangemessene Parameter, die an die Methode übergeben wurden |
Beachten Sie, dass die
folgenden Beispiele keine Ausnahmen auslösen, sondern überlaufen
long l=Long.MAX_VALUE+1;//-9223372036854775808
4. Ausnahmen deklarieren und abfangen.
Schlüsselwort Deklaration: Würfe
deklarieren mehrere durch Kommas getrennte Ausnahmen. Schlüsselwort
Throw: throw
public static void method() throws Exception()
Das Folgende ist ein Beispiel für eine Deklaration, die eine Ausnahme abfängt
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int x = in.nextInt();
int y = in.nextInt();
try {
System.out.println(devide(x, y));//正常情况下运行
} catch (ArithmeticException e) {
//捕获异常
System.out.println(e.toString());//处理异常
}
}
public static int devide(int x, int y) {
//此处异常为运行时异常,故不需要显式声明
if (y == 0) {
throw new ArithmeticException("0不能作除数");//抛出ArithmeticException异常
} else {
return x / y;
}
}
//输入与返回结果:
//3
//0
//java.lang.ArithmeticException: 0不能作除数
3. Ausnahmebehandlung
1. Wenn die Ausnahme nicht in der übergeordneten Klasse deklariert ist, kann sie nicht in der Unterklasse vererbt werden, um die Ausnahme zu deklarieren
2. Wenn die Ausnahme in der aktuellen Methode nicht abgefangen wird, wird sie an den Aufrufer der Methode übergeben. Dieser Vorgang wird wiederholt, bis die Ausnahme abgefangen oder an die Hauptmethode übergeben wird
3. Ein Kompilierungsfehler tritt auf, bevor der catch-Block der übergeordneten Klasse vor dem catch-Block der Unterklasse angezeigt wird
try{
}
catch(Exception e){
}
catch(IOException e){
}//错误的顺序
4. Multi-Catch-Ausnahme in JDK7
catch(Exception1|Exception2|Exception3|……)
try{
method();//如果此方法抛出异常而没有处理,则不会执行下面的语句
System.out.println("hello");
}
5. Wenn keine Ausnahme auftritt, verursacht der Try-Catch-Block keinen zusätzlichen System-Overhead
6.
finally- Klausel Unabhängig davon, ob eine Ausnahme auftritt, wird die finally-Klausel immer ausgeführt
Auch wenn vor der Schlussklausel eine return-Anweisung steht, wird die finally-Klausel dennoch ausgeführt
7. Wenn ein Ausnahmebehandler eine Ausnahme nicht behandeln kann oder den Aufrufer die Ausnahme nur bemerken lässt, werfen Sie die Ausnahme erneut
8. Erstellen einer benutzerdefinierten Ausnahmeklasse Die
Ausnahme umfasst vier Konstruktionsmethoden, von denen die folgenden zwei sind
Exception();//没有消息的异常
Exception(message:String);//有消息的异常
Four.File-Klasse
Die File-Klasse enthält Methoden zum Abrufen von Datei- / Verzeichnisattributen sowie zum Umbenennen und Löschen von Dateien. Sie enthält keine Methoden zum Lesen und Schreiben von Dateiinhalten.
Durch das Erstellen einer Dateiinstanz wird keine Datei auf dem Computer erstellt. Unabhängig davon, ob die Datei vorhanden ist, können Sie eine Dateiinstanz erstellen
File file = new File("c:\\z下载\\files\\test\\Demo.txt");
File file = new File("c:/z下载/files/test/Demo.txt");
//使用/或者\\都可以
Die Methoden in der File-Klasse werden nicht im Detail vorgestellt, sie können online gefunden werden.
Fünftens: Eingabe und Ausgabe von Dateien
Verwenden Sie die Scanner-Klasse, um Daten aus dem Text zu lesen, und verwenden Sie die PrintWriter-Klasse, um Daten aus dem Text zu schreiben
java.io.PrinterWriter kann Dateien erstellen und Daten schreiben
Der Stream muss mit close () geschlossen werden, sonst können die Daten nicht in der Datei gespeichert werden
Sie können try-with-source in jdk7 verwenden, um zu verhindern, dass Sie vergessen, den Stream zu schließen
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("c:\\z下载\\files\\test\\notexist.txt");//创建File对象
try (PrintWriter printWriter = new PrintWriter(file)) {
for (int i = 0; i < 10; i++) {
printWriter.print(i);//将数据写入文件
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Um Scanne zum Lesen von Daten aus einer Datei zu erstellen, muss eine Instanz mit der Konstruktionsmethode new File (fileName) erstellt werden.
File file = new File("c:\\z下载\\files\\test\\notexist.txt");
try (Scanner input = new Scanner(file)) {
while (input.hasNext()) {
System.out.print(input.nextInt());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Lesen Sie Daten aus dem Web
File file = new File("c:\\z下载\\files\\test\\notexist2.txt");
try {
URL url = new URL("http://www.baidu.com/index.html");
try (Scanner in = new Scanner(url.openStream()); // 打开流
PrintWriter printWriter = new PrintWriter(file)) {
while (in.hasNext()) {
printWriter.print(in.nextLine());//写入文件
}
}
} catch (MalformedURLException e1) {
// MalformedURLException 地址输入错误异常
e1.printStackTrace();
}
Hinweis
- Wenn Sie die Eingabe wiederholen müssen, schreiben Sie in.nextLine () in catch, um die aktuelle Zeile zu verwerfen und zu umbrechen
- Die Klasse ist für das Auslösen von Ausnahmen verantwortlich, und die Klasse, die diese Methode aufruft, ist für das Erfassen und Verarbeiten verantwortlich
Benutzerdefinierte Ausnahmeschritte
- Erben Sie die Unterklasse Ausnahme oder Ausnahme
- Rufen Sie sper (s) auf Anfrage an;
- Deklarieren und werfen Sie die gerade in einer anderen Klasse definierte Ausnahmeklasse
- Ausnahmen in der Testklasse abfangen und behandeln
Sechs. Zusammenfassung
Durch das Studium dieses Kapitels habe ich die Grundkenntnisse über Java-Ausnahmen und -Handhabung, viele Ausnahmen und die Ursachen von Ausnahmen sowie die Verwendung der File-Klasse zum Erstellen von Textobjekten, zum Verstehen der Texteingabe und -ausgabe sowie zum Abrufen von Informationen aus dem Internet erlernt .
Komm schon! Kapitel 13 Mehr sein ...