У меня проблема со следующим кодом. Во-первых, я новичок в Java с опытом работы с несколькими другими языками.Java выполняет «catch» блок без ошибок и как-то все еще запускает блок «try»
Когда я запускаю следующее на 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());
}
Что именно происходит? Почему мой код работает на ошибках Android при запуске в консоли Java просто отлично? Почему при ошибках он не возвращает то, что должна возвращать ошибка. и пустую строку? Как просмотреть сообщение об ошибке в Android?
У вас есть разрешение на использование Интернета в файле манифеста? – MAC
Вы уверены, что получили ошибку? Вы можете вызвать 'e.printStackTrace()' в своем исключении, чтобы получить точный тип исключения и в какой строке он произошел. Это работает как для обычного java, так и для Android (на Android-устройстве он отображается в LogCat). – Jave
Я добавил e.printStackTrace() в свой блок catch перед возвратом, и ничего не появляется в моем LogCat. Если функция возвращает json правильно, и не выводится ошибка, почему тогда отладчик прерывается в точке останова при моем возврате в блоке catch? – Fase