FileInputStream wirft NullPointerException
Erhalte ich die nullpointerexception, weiß nicht, was es eigentlich ist, was es ist. Ich lese aus den java-docs, die fileinputstream nur throws securityexception also nicht verstehen, warum diese Ausnahme erscheint.
hier ist mein code-snippet.
private Properties prop = new Properties();
private String settings_file_name = "settings.properties";
private String settings_dir = "\\.autograder\\";
public Properties get_settings() {
String path = this.get_settings_directory();
System.out.println(path + this.settings_dir + this.settings_file_name);
if (this.settings_exist(path)) {
try {
FileInputStream in = new FileInputStream(path + this.settings_dir + this.settings_file_name);
this.prop.load(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
this.create_settings_file(path);
try{
this.prop.load(new FileInputStream(path + this.settings_dir + this.settings_file_name));
}catch (IOException ex){
//ex.printStackTrace();
}
}
return this.prop;
}
private String get_settings_directory() {
String user_home = System.getProperty("user.home");
if (user_home == null) {
throw new IllegalStateException("user.home==null");
}
return user_home;
}
und hier ist mein stacktrace:
C:\Users\mohamed\.autograder\settings.properties
Exception in thread "main" java.lang.NullPointerException
at autograder.Settings.get_settings(Settings.java:41)
at autograder.Application.start(Application.java:20)
at autograder.Main.main(Main.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Line 41 is: this.prop.load(in);
- Vielen Dank Jungs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Zeile 41
this.prop.load(in);
dann scheint es, als obthis.prop == null
Fügen Sie einen Haltepunkt in der Zeile zu überprüfen.
Versuch zum aufrufen einer Methode für eine null-Instanz, die Ergebnisse in eine
NullPointerException
.Ist die variable prop null, wenn es ausführt, die in Zeile 41? Versuchen Sie das debugging Ihres Programms zu überprüfen. z.B. hinzufügen
Auch, NullPointerException ist eine ungeprüfte Ausnahme, so ist keine Dokumentation im Javadoc.
Ich denke, dass die anderen reviewer haben einen fairen job in erklären Ihr problem.
Paar Hinweise:
Bemerkte ich, dass Sie den Fang bestimmter Ausnahmen, aber nicht Sie zu werfen. Wenn Sie nicht werfen die Ausnahme, dann gibt es keinen Punkt in dem Fang.
Zweitens, um zu vermeiden, NPEs sollten Sie immer überprüfen Sie, ob Ihr Objekt null ist, bevor ausführen etwas auf das Objekt.