【发布时间】:2015-07-11 05:22:57
【问题描述】:
我有一个 try/catch 循环,这是最后一部分:
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String jsonResponse = reader.readLine();
Log.d("BSARD",jsonResponse);
return jsonResponse;
}
catch (Exception e) {
Log.d("BSARD","Something weird happened");
}
return null;
当我在调试器中运行时,它会执行直到“Log.d("BSARD",jsonResponse)”的所有操作,但会直接跳转到“return Null”。我已经检查了 jsonResponse 是一个有效的字符串 - 因此我将 Log.d 语句放在那里以便我可以暂停代码并检查变量。如果我在“Log.d("BSARD",jsonResponse)”行之后添加更多代码,它会执行得很好——它永远不会执行“return jsonResponse”。
我完全被难住了。我不知道为什么会这样,因为我在另一个运行良好的 java 类中有一段相同的代码。
我已经尝试清理构建并重建项目几次,但无济于事。我还修改了代码,将 null 返回移动到 catch 循环中,并在它前面放置了一个附加语句,它仍然跳转到 null 而不执行前面的任何 catch 代码。堆栈跟踪中没有任何内容,实际上没有抛出异常。
因此,无论 null 位于 catch 语句之内还是之外,它都会直接跳转到它。
这是代码目前的样子......
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost(u);
httppost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response = client.execute(httppost);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String jsonResponse = reader.readLine();
Log.d("BSARD",jsonResponse);
return jsonResponse;
}
catch (Exception e) {
e.printStackTrace();
Log.d("BSARD","Something weird happened");
return null;
}
有什么线索吗?
【问题讨论】:
-
您尝试清理项目了吗?项目 > 清理。
-
你有什么例外吗?
-
是跳转到
return null,还是跳转到方法的右括号?调试器可能会跳转到右括号以指示它正在离开该方法,而不管执行的 return 语句在哪里。 -
尝试在两个返回语句之前添加
System.out.println("got here");(使文本不同,以便您知道它到达了哪个)并查看哪一行得到输出。如果两者都没有,那么您的代码由于某种原因没有重新编译。否则它应该会给你一个关于正在发生的事情的线索。 -
您可能没有构建项目,请尝试重新构建它。
标签: java return try-catch bufferedreader