这个问题让我有点疯狂,所以希望你们中的一个好人能指出我正确的方向。我正在尝试准备一个将从客户端传递到服务器的JSONObject。以下是有问题的方法:
private JSONObject getJsonParam(int id)
{
JSONObject param = new JSONObject();
try
{
param.put("functionCode", 50);
param.put("id", id);
return param;
}
catch (JSONException e)
{
e.printStackTrace();
}
catch (Throwable e)
{
e.printStackTrace();
}
return null;
}
我在调试模式下仔细跟踪了代码。在实际的方法中,我在JSONObject中放了更多的参数,直到我尝试插入id的最后一个param.put()方法都是如此。当这是当前的执行行时,我可以看到param变量,所有看起来都很好。然后当我执行step函数执行最后一次param.put调用时,它会跳转到return null语句。我在两个catch块中都放置了断点,似乎都没有执行。 (我添加了第二个catch块以确保没有其他throwable导致问题)。
任何想法会导致这种奇怪的行为?我甚至尝试重新安排看跌期权的顺序。它对特定的put调用没有任何问题,但只是return语句之前的最后一个。
我在Android / Java工作。
答案 0 :(得分:1)
代码不会导致错误 - 您只是被编译器优化了两个return语句以使用相同的代码这一事实而被捕获。
在每种情况下,返回都是一些“当前值”,在一种情况下,当前值来自param变量,在另一种情况下,它是null。由于编译器只使用代码的一个副本,因此调试器无法正确确定正在执行的实际源代码行。