如何从Try and Catch中删除代码?

时间:2013-12-10 04:07:31

标签: java android json try-catch

我的代码中有一些try / catch中的字符串。我需要访问同一类的其他部分中的字符串,但我不能。我尝试删除try / catch,它不会让我没有抛出以下错误:

  

未处理的异常类型JSONException

这是我的try / catch代码。将它变为普通类的最佳方法是什么,以便我可以访问同一类中其他代码部分的字符串? (此代码在默认的oncreate包内)

      try {
            // Getting JSON Array
            user = json.getJSONArray(TAG_USER);
            JSONObject c = user.getJSONObject(0);

            // Storing  JSON item in a String Variable

            String name = c.getString(TAG_NAME);
            String messages = c.getString(TAG_MESSAGES);
            String wins = c.getString(TAG_WINS);
            String display = c.getString(TAG_DISPLAY);
            String email = c.getString(TAG_EMAIL);
            String pw = c.getString(TAG_PW);
            String created = c.getString(TAG_CREATED);
            String updated = c.getString(TAG_UPDATED);

            //Importing TextView

            TextView name1 = (TextView)findViewById(R.id.tvfullname);
            TextView messages1 = (TextView)findViewById(R.id.envelope);
            TextView wins1 = (TextView)findViewById(R.id.wins);
            TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
            TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);

            //Set JSON Data in its respectable TextView

            name1.setText("Hello " + name);

            updated1.setText("Your last login was " + updated);

           // print error if applicable.
         } catch (JSONException e) {
               e.printStackTrace();
         }

7 个答案:

答案 0 :(得分:0)

使那些你想要访问的字符串全局。声明那些在类级别的字符串,以便可以在类中的任何位置访问它。

例如 假设您的班级名称为X,并且您想要访问String name 然后这样做

class X
{
String name;
try
{
name=c.getString(TAG_NAME);
//other codes
}
catch (JSONException e) {
        e.printStackTrace();
    }
}

现在回答这个我需要访问同一类其他部分的字符串

您可以使用相同的方法或不同的方法访问班级中的任何位置

答案 1 :(得分:0)

在try-catch块之外声明你的字符串

并在try块内分配值。

外部尝试阻止

    String name = null;
    String messages = null;
    String wins = null;
    String display = null;
    String email = null;
    String pw = null;
    String created = null;
    String updated = null;

内部尝试块

// Storing  JSON item in a String Variable

            name = c.getString(TAG_NAME);
            messages = c.getString(TAG_MESSAGES);
            wins = c.getString(TAG_WINS);
            display = c.getString(TAG_DISPLAY);
            email = c.getString(TAG_EMAIL);
            pw = c.getString(TAG_PW);
            created = c.getString(TAG_CREATED);
            updated = c.getString(TAG_UPDATED);

另一种方法如果你想删除try-cath,你可以在你的方法/类中添加“throws”(这样你就可以将异常传播给调用处理类)。

顺便说一句,这个问题只有在你是java新手的时候才有意义,否则你需要刷你的基础java学校的大时间:))

答案 2 :(得分:0)

在try之外声明字符串,它们将具有更广泛的范围,以便它们可以在其他地方使用。

答案 3 :(得分:0)

您需要做的是在try-catch之外声明这些变量可以在全局范围内声明它们

String name;
            String messages;
            String wins ;
            String display;
            String email;
            String pw;
            String created ;
            String updated ;
try {
            // Getting JSON Array

            user = json.getJSONArray(TAG_USER);
            JSONObject c = user.getJSONObject(0);






            // Storing  JSON item in a String Variable

            name = c.getString(TAG_NAME);
            messages = c.getString(TAG_MESSAGES);
            wins = c.getString(TAG_WINS);
            display = c.getString(TAG_DISPLAY);
            email = c.getString(TAG_EMAIL);
            pw = c.getString(TAG_PW);
            created = c.getString(TAG_CREATED);
            updated = c.getString(TAG_UPDATED);



            //Importing TextView

            TextView name1 = (TextView)findViewById(R.id.tvfullname);
            TextView messages1 = (TextView)findViewById(R.id.envelope);
            TextView wins1 = (TextView)findViewById(R.id.wins);
            TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
            TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);




            //Set JSON Data in its respectable TextView

      name1.setText("Hello " + name);





      updated1.setText("Your last login was " + updated);






 // print error if applicable.
    } catch (JSONException e) {
        e.printStackTrace();
    }




    }

答案 4 :(得分:0)

将字符串变量声明为globel。

  

private static final NAME =“name”;

在所有必需区域使用NAME

答案 5 :(得分:0)

试试这个

        String name = null;
        String messages = null;
        String wins = null;
        String display = null;
        String email = null;
        String pw = null;
        String created = null;
        String updated = null;
      try {
        user = json.getJSONArray(TAG_USER);
        JSONObject c = user.getJSONObject(0);

        // Storing  JSON item in a String Variable
        name = c.getString(TAG_NAME);
        messages = c.getString(TAG_MESSAGES);
        wins = c.getString(TAG_WINS);
        display = c.getString(TAG_DISPLAY);
        email = c.getString(TAG_EMAIL);
        pw = c.getString(TAG_PW);
        created = c.getString(TAG_CREATED);
        updated = c.getString(TAG_UPDATED);

        //Importing TextView
        TextView name1 = (TextView)findViewById(R.id.tvfullname);
        TextView messages1 = (TextView)findViewById(R.id.envelope);
        TextView wins1 = (TextView)findViewById(R.id.wins);
        TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
        TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);

        //Set JSON Data in its respectable TextView
        name1.setText("Hello " + name);
        updated1.setText("Your last login was " + updated);

       // print error if applicable.
      } catch (JSONException e) {
               e.printStackTrace();
         }
    }

答案 6 :(得分:0)

我认为你可以用getXXX方法取代getXXX方法,它会是一个更好的选择,你这么认为吗? 例如:

try {
    name = c.getString(TAG_NAME);
} catch (Exception e) {
    //
}

现在你可以尝试下面的代码:

  name = c.optString(TAG_NAME);

好的,就是这样。