我对以下代码有疑问。首先,我是 Java 的新手,有其他几种语言的经验。
当我在 Android 上运行以下命令时,它在“in.close();”处出错,跳转到 catch 块并运行 Return“”;问题是,该函数不会返回一个空字符串,它成功地返回了正确的 json 数据,即使调试器说它没有运行 return json,但它正在运行 return "";
public void fetch() {
// Get the JSON of the image gallery
String json = getJSON();
// json somehow has the actual correct json data and not an empty string!
};
private String getJSON() {
try {
// Create a URL for the desired page
URL url = new URL("http://imgur.com/gallery.json");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
String json = in.readLine();
in.close();
return json; // <-- debugger doesn't break here!
}
catch(Exception e) {
Log.e("getJSON", e.getMessage());
return ""; // <-- debugger breaks here! Cat Log shows nothing!
}
}
我将完全相同的代码复制到 Java 控制台中,以便我可以输出错误消息并在带有断点的调试器中观察它,并且代码执行时不会出错。
try {
// Create a URL for the desired page
URL url = new URL("http://imgur.com/gallery.json");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String json = in.readLine();
in.close();
System.out.println(json);
}
catch(Exception e) {
System.out.println(e.getMessage());
}
到底发生了什么?为什么我的代码在 Java 控制台中运行时在 Android 上运行会出错?为什么当它出错时它不返回错误应该返回的内容;和空字符串?如何在 Android 中查看错误消息?