我正在尝试在Android Studio中调试这段代码。这一切看起来都非常简单,但尝试中的'返回sb1'将不允许我打破它(带有x的红点)并说它不可执行。
public static String postRecordOnServer(String url,
ArrayList<NameValuePair> nameValuePairs) {
String message = "";
InputStream is = null;
try {
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
sb.append(reader.readLine());
String sb1 = sb.toString().toUpperCase();
reader.close();
is.close();
return sb1;
} catch (Exception e) {
message = e.getMessage();
}
return "EXCEPTION:" + message;
}
即使它总是返回'EXCEPTION',调用函数也会获得NULL结果值。 Catch永远不会被解雇。
有什么建议吗?
答案 0 :(得分:1)
您可能会发现一些有用的提示.-
尝试通过在方法开头添加断点来逐步调试,只是为了检查实际发生的情况。
抛出异常。返回带有异常的消息并不是您应该处理函数内部问题的方式。你应该在catch块中添加一些逻辑,或者只是让postRecordOnServer
抛出Exception
,然后让调用函数来处理它。
答案 1 :(得分:0)
尝试“文件 - &gt;无效缓存”并重新启动。
我想我遇到了类似的事情,它对我有用。
我使用了一些我在互联网上找到的代码并且它抛出异常。他们没有让异常泡沫化,而是将细节放入自定义对象中,并且他们正在传递它。好吧,我不喜欢这样,我试图改变它,但我遇到了很大的困难。
涉及三个班级; A,B和C.我的代码调用A,调用B,调用C,C抛出异常。
在我的更改后抛出异常时,堆栈跟踪没有任何意义,所以我决定直接调用C。当抛出异常时,我仍然看到A&amp;即使我绕过它们,B仍在追踪中。然后我完全删除了A&amp; B来自我的项目,但他们仍然出现在追踪中。 WTF !!!
经过一段时间拉扯我的头发后,我恢复了缓存,重新启动,问题得到了解决。