Android try块中的JSONObject put方法导致错误,但未执行catch块

Android try块中的JSONObject put方法导致错误,但未执行catch块,android,json,Android,Json,这个问题让我有点疯狂,希望你们中的一位优秀人士能为我指明正确的方向。我正在尝试准备一个JSONObject,它将从客户端传递到服务器。以下是有问题的方法,其要点如下: private JSONObject getJsonParam(int id) { JSONObject param = new JSONObject(); try { param.put("functionCode", 50); param.put("id", id);

这个问题让我有点疯狂,希望你们中的一位优秀人士能为我指明正确的方向。我正在尝试准备一个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中添加了更多的参数,直到最后一个param.put()方法尝试插入id为止,一切都很好。当这是当前执行行时,我可以可视化param变量,并且一切看起来都很好。然后,当我执行step函数来执行最后一个param.put调用时,它跳转到returnnull语句。我在两个catch块中都设置了断点,但似乎都没有执行。(我添加了第二个catch块,以确保没有其他丢弃物引起问题)

你知道是什么导致了这种奇怪的行为吗?我甚至试着重新安排看跌期权的顺序。它对特定的put调用没有任何问题,只是在return语句之前的最后一个调用


我使用的是Android/Java。

代码没有导致错误-您只是被编译器优化了两个返回语句以使用相同的代码这一事实所迷惑


在每种情况下,返回值都是某个“当前值”,在一种情况下,当前值来自param变量,在另一种情况下,返回值为null。由于编译器只使用代码的一个副本,调试器无法正确确定正在执行的实际源代码行。

您会遇到什么错误,请发布StackTraceth这可能是IDE的问题。通过在函数外放置断点并检查它返回的内容,确保结果是JSONObject且不为null。@PedroOliveira IDE确实存在问题。当我按照您的建议执行操作时,我发现该函数正在返回正确的JSONObject!非常感谢。我想这意味着我浪费了很多时间试图解决一个实际上不是问题的问题。。。哈哈