Ich bin gerade auf ein kleineres Problem gestossen, und zwar sollte ich aus einer .txt Datei Daten rauslesen und weiterverwenden. Nun ist es aufgrund der Aufgabenstellung möglich, dass die Datei keinen Inhalt hat. In dem Fall krieg ich eine NullPointerException , wenn ich die Datei mit
Java:
privatestatic...(String dataletter){String[] data =In.readStrings(dataletter);...
einzulesen versuche. Wie kann man das Problem umgehen?
Ich bin gerade auf ein kleineres Problem gestossen, und zwar sollte ich aus einer .txt Datei Daten rauslesen und weiterverwenden. Nun ist es aufgrund der Aufgabenstellung möglich, dass die Datei keinen Inhalt hat. In dem Fall krieg ich eine NullPointerException , wenn ich die Datei mit
Java:
privatestatic...(String dataletter){String[] data =In.readStrings(dataletter);...
einzulesen versuche. Wie kann man das Problem umgehen?
Dann lehne ich mich mal aus dem Fenster und behaupte, die NPE wird in Zeile 3 geworfen, weil
Code:
in.readAll()
ein
Code:
null
zurück bringt. Ich würde die NPE hier mit einem try/catch abfangen und in eine [JAPI]RuntimeException[/JAPI] mit einer vernünftigen Fehlermeldung umwandeln:
Java:
try{return in.readAll().trim().split("\\s+");}catch(NullPointerrException npe){thrownewRuntimeException("Input file was empty!");}
Damit muss sich nur noch
Code:
main
damit beschäftigen, um dem Anwender den Grund für den Programmabbruch auszugeben (wenn mann denn den Stacktrace in der Konsole unterdrücken will).
An allen anderen Stellen des Programms kann man jetzt davon ausgehen, dass die Datei Inhalt hatte.
bye
TT
Wobei das relativ schlechter Stil ist. Besser:
Die Rückgabe von in.readAll() in eine Variable lesen, prüfen ob der Inhalt null oder leer ist. Wenn ja, dann eine Exception werfen.
nun, letzten Endes adde ich einfach alles was rauskommt, wenns nix ist adde ich halt nix, dann muss ich nicht mit exceptions um mich werfen oder?
konkret heiss das:ich habe eine Klasse Postmen, Package und Letter extenden Mailing:
Java:
publicclassPostmen{...privateList<Mailing> cargo;...privatestaticList<Mailing>getpackage(String datapackage){String[] data =In.readStrings(datapackage);.../*Konstruiere aus data neue Einträge des Typs Package
cargo.add(new Package(...))*/return cargo;}privatestaticList<Mailing>getletter(String dataletter){String[] data =In.readStrings(dataletter);.../*Konstruiere aus data neue Einträge des Typs Letter
cargo.add(new Letter(...))*/return cargo;}publicPostmen(...,String dataletter,String datapackage,...){...this.cargo=getletter(dataletter);this.cargo.addAll(getpackage(datapackage));...}