Video: Wie installiert man Mods in Minecraft | Minecraft Mods installieren 2024
Stellen Sie sich ein Java-Programm vor, das Eingaben von zwei verschiedenen Dateien oder von einem
Scanner
und einer Diskette erhält Datei. Um sicherzustellen, dass Sie ordnungsgemäß bereinigen, setzen Sie
Methodenaufrufe
in einer
finally
Klausel.
importiert Java. io. Datei;
importiert Java. io. IOException;
importiert Java. Nutz. Scanner;
öffentliche Klasse Main {
public static void main (Zeichenfolge args []) {
Scanner scan1 = null;
Scanner scan2 = null;
try {
scan1 = neuer Scanner (neue Datei ("Datei1. Txt"));
scan2 = neuer Scanner (neue Datei ("Datei2. Txt"));
// Nützliches
tun} catch (IOException e) {
// Hoppla!
} schließlich {
scan1. schließen();
scan2. schließen();
System. aus. println ("Fertig!");
}
}
}
Theoretisch führt der Computer immer
scan1 aus. close ()
und
scan2. close ()
egal, was bei der Ausführung der
try
Klausel schief geht. Aber das ist Theorie. In Wirklichkeit könnte ein anderer Programmierer (natürlich nicht Sie) den Code ändern, indem er
scan1
in der Mitte der
try
-Klausel schließt:
try {
scan1 = neuer Scanner (neue Datei ("Datei1. Txt"));
scan2 = neuer Scanner (neue Datei ("Datei2. Txt"));
// Nützliches erledigen, aber auch …
scan1. schließen();
scan1 = null;
} catch (IOException e) {
// Hoppla!
} schließlich {
scan1. schließen();
scan2. schließen();
System. aus. println ("Fertig!");
}
Jetzt hast du eine wirkliche Situation. In der
finally
Klausel ist der Wert von
scan1
null
. Der Aufruf von
scan1. close ()
schlägt fehl, daher löst das Programm eine
NullPointerException
aus und hört auf zu laufen, bevor der Aufruf von
scan2 erreicht wird. schließen ()
. Im schlimmsten Fall ist
scan2
nicht geschlossen und Ihr Programm hat
Datei2. txt
gesperrt, sodass kein anderes Programm die Datei verwenden kann.
Wenn ein Programm mehrere Ressourcen verwendet (viele Dateien, eine Datenbank und eine Datei oder was auch immer), wird der Aufbau von
try
-Anweisungen ziemlich kompliziert. Sie können
Anweisungen
innerhalb von
catch
Klauseln und allen möglichen verrückten Kombinationen ausführen. Aber Java hat eine bessere Möglichkeit, das Problem zu lösen: In Java 7 (und späteren Versionen von Java) können Sie eine Anweisung try-with-resources erstellen. Dieser Code zeigt Ihnen wie.
importiert Java. io. Datei;
importiert Java. io. IOException;
importiert Java. Nutz. Scanner;
public class NewMain {
public statisch void main (Zeichenfolge args []) {
try (Scanner scan1 = neuer Scanner (neue Datei ("Datei1.txt "));
Scanner scan2 = neuer Scanner (neue Datei (" Datei2. txt "))) {
// Nützliches erledigen
} catch (IOException e) {
// Oops ! v
}
System.out println ("Fertig!");
}
}
In diesem Code sind die Deklarationen von
scan1
und
scan2
steht in Klammern hinter dem Wort
try
Die Klammerdeklarationen weisen Java an,
scan1
und
scan2
automatisch nach der Ausführung der Anweisungen in > try
clause Sie können mehrere Ressourcen innerhalb der Klammern einer
try
-Anweisung deklarieren.Wenn Sie das tun, schließt Java alle Ressourcen automatisch nach der Ausführung der Anweisungen
try
clause. Fügen Sie
catch
Klauseln und eine
finally
Klausel hinzu, wenn Sie möchten.Sie können auf alle Arten von Ressourcen zugreifen (Dateien, Datenbanken, Verbindungen zu Servern und andere) und haben die Gewissheit, dass Java wird die Verbindungen automatisch trennen.
Das Leben ist gut.