微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何从try / catch块中获取变量?

我一直试图让这个正确的2天,我准备扔东西…..

我有一个JSONArray,我正在try / catch块中处理,但它似乎没有在最后传递变量.

我的代码

try{
    //Get the element that holds the results ( JSONArray )
    JSONArray  getresults = json.getJSONArray("results");
    //Loop the Array
    for(int i=0;i < getresults.length();i++){                       
        HashMap<String,String> map = new HashMap<String,String>();
        JSONObject e = getresults.getJSONObject(i);
        totalpass = e.getJSONObject(i).getString("ftotalpass");                         
    }                              

} catch(JSONException e)        {
    Log.e("log_tag","Error parsing data "+e.toString());                                       
}

我已尝试在try / catch块之前,之后,之后声明变量的所有庄园,但我无法将其传递给我的其余代码.

我究竟做错了什么?

解决方法

嗯…

你可以在外面宣布它.如

JSONArray results = null;

try {
     results = json.getJSONArray("results");
}...

这样你可以在外面访问它,但一定要使用if来查看它是否为null.

如果你没有把JSONArray results = null,编译器可能会抱怨没有被初始化的变量.

进一步说明:

这是因为范围.当您在try中声明时,变量的范围在try结束时结束.当你在if中声明,当if结束时,不再能访问该变量.这对于临时变量非常有用,在这些变量中,您只使用它们进行比较或更好的代码可读性,内存重用等.(如果这甚至是单词,则为idk).无论如何,如果你的变量需要在类中的任何地方访问,那么最好将其声明为字段.

我没看过this explanation,但看起来不错.看一看.

原文地址:https://www.jb51.cc/java/121206.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐