Input/Output IOException bei createNewFile()

DrPCox

Mitglied
Guten Abend,

ich habe gerade angefangen mich mit Steams in Java zu beschäftigen und wollte mich halt mal am Anfang an die Klasse "File" trauen und habe diesen Zehnzeiler geschrieben. Leider wirft mit der Compiler bei Zeile zehn (neueDatei.createNewFile()😉 eine IOException und ich habe keine Ahnung warum. Halte mich auch schön brav ans Buch und an die Vorlesungsfolien meines Profs und stehe daher arg auf dem Schlauch.

Dankeschön schonmal an jeden, der da mal nen Blick drauf wirft 🙂

Java:
import java.io.File;

public class Beispiel {

	public static void main(String[] args) {
		File datei = new File("Test");
		datei.mkdir();
		
		File neueDatei = new File(datei.getPath() + "/datei.txt");
		neueDatei.createNewFile();
	}
	
}
 
1) Throwt createNewFile eine IOException die du nirgends abfängst, von daher dürfte sich das Beispiel nichtmal Bytecode-Compilieren lassen.
2) Wie kommst du auf die Idee, jemand könnte dir sagen was sie bedeutet, wenn sie niemand kennt? :autsch:
 
Ein Kompiler wirft keine Exceptions. Er wird Dich wahrscheinlich nur darauf hinweisen, dass beim Aufruf von create... eine IOException abgefangen werden muss.
 
Ich meinte auch, dass der Code die Exception wirft. OK..ich wusste nicht, dass man hier wirklich ne Exception abfangen muss, auch wenn sie nicht geworfen wird. habs jetzt mal so ausprobiert und es klappt natürlich.

Java:
import java.io.*;

public class Beispiel {

	public static void main(String[] args) {
		File datei = new File("Test");
		datei.mkdir();
		
		File neueDatei = new File(datei.getPath() + "/datei.txt");
		try {
			neueDatei.createNewFile();
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		
	}
	
}

Danke für den Hinweis!
 
OK..ich wusste nicht, dass man hier wirklich ne Exception abfangen muss, auch wenn sie nicht geworfen wird.
Das ist ja das Problem, du hast zur Schreibzeit keine Ahnung ob sie geworfen wird. Deshalb musst du ja schreiben was passiert, falls sie geworfen wird. Fehlende Rechte, ungültiger Dateipfad, gerade IOExceptions haben sehr viele verschiedene Möglichkeiten, was da schief laufen könnte. Außerdem geben manche Methoden in File auch Rückmeldung über boolean, die solltest du auch beachten.

btw. rufe von der IOException-Instanz lieber printStackTrace() statt der Ausgabe auf, das ist für Fehlerdiaqnose hilfreicher, weil du siehst was der genaue Plan des Programms war.
 

Neue Themen


Zurück
Oben