如何从异常代码块中获取变量

时间:2015-07-07 08:33:26

标签: java exception-handling

我想从user1.namepublic static void FileRead()获取private void jButton1ActionPerformed变量,但它不会读取user1.name。你能解释一下我怎么能用这个变量。

public static class Users {
    public String name;
    public String password;

    Users(String name1, String password1) {
        name = name1;
        password = password1;
    }

}

public static void FileRead() {
    try {
        BufferedReader in = new BufferedReader(new FileReader("C:/Users/B_Ali/Documents/NetBeansProjects/JavaApplication20/UserNamePassword.txt"));
        String[] s1 = new String[5];
        String[] s2 = new String[5];
        int i = 0;
        while ((s1[i] = in.readLine()) != null) {
            s1[i] = s2[i];
            i = i + 1;

            if (i == 1) {
                Users user1 = new Users(s2[0], s2[1]);
            }
            else if (i == 3) {
                Users user2 = new Users(s2[2], s2[3]);
            }
            else if (i == 5) {
                Users user3 = new Users(s2[4], s2[5]);
            }
        }
        in.close();
    }
    catch (FileNotFoundException ex) {
        Logger.getLogger(LoginScreen.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex) {
        Logger.getLogger(LoginScreen.class.getName()).log(Level.SEVERE, null, ex);
    }

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JOptionPane.showMessageDialog(null, user1.name);
    // TODO add your handling code here:
}

我应该在哪里申报? 编辑:如果我按照你之前的说法声明它。它变得毫无意义,因为我想使用user1.name中定义的FileRead()

2 个答案:

答案 0 :(得分:2)

  

宣布它是全球性的。

Users user1;

public static class Users {
    public String name;
    public String password;

    Users(String name1, String password1) {
        name = name1;
        password = password1;
    }
    public String getName()
    { return this.name;
       }
    public String getPassword()
    {return this.password;
     }
}

Users user1, user2;
public static void FileRead() {
    try {
        BufferedReader in = new BufferedReader(new FileReader("C:/Users/B_Ali/Documents/NetBeansProjects/JavaApplication20/UserNamePassword.txt"));
        String[] s1 = new String[5];
        String[] s2 = new String[5];
        int i = 0;
        while ((s1[i] = in.readLine()) != null) {
            s1[i] = s2[i];
            i = i + 1;

            if (i == 1) {
                Users user1 = new Users(s2[0], s2[1]);
            }
            else if (i == 3) {
                Users user2 = new Users(s2[2], s2[3]);
            }
            else if (i == 5) {
                Users user3 = new Users(s2[4], s2[5]);
            }
        }
        in.close();
    }
    catch (FileNotFoundException ex) {
        Logger.getLogger(LoginScreen.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex) {
        Logger.getLogger(LoginScreen.class.getName()).log(Level.SEVERE, null, ex);
    }

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JOptionPane.showMessageDialog(null, user1.getName());
    // TODO add your handling code here:
}

答案 1 :(得分:2)

您需要在try子句之外声明所需的变量,如:

String global = null;

try{
    global = "abc";
    throw new Exception();
}
catch(Exception e){
   if (global != null){
       //your code
   }
}