我有一个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;
}
任何线索?
答案 0 :(得分:0)
尝试清理项目和服务器!您的代码可能无法正确构建。
答案 1 :(得分:0)
这个怎么样 - 调用方法又取回了什么? This post表明这可能是一个编译器优化,它合并了两个return语句,在这种情况下,调试器看起来"返回null"语句已执行,但调用者实际上会收到您的JSON。
Java允许编译器进行更改以优化代码,前提是这不会改变其运行时行为。