从Try-Catch中获取一个字符串

时间:2017-07-04 07:06:48

标签: java string scope

我对try-catch有一点问题。

我的目标是从try块中获取testtest2值,以后我可以使用它。

如何处理?

public class MyApplication {
    public static void main(String[] args) {
        try {
            int test = Integer.parseInt("123");
            String test2 = "ABCD";
        } catch (NumberFormatException ex) {
            System.out.print(ex.getMessage());
        }
    }
}

3 个答案:

答案 0 :(得分:4)

只需在外部范围内声明它们:

public class MyApplication {

    public static void main(String[] args) {
        int test = Integer.MAX_VALUE; // setting to max value to check if it was set later
        String test2 = null;

        try {
            test = Integer.parseInt("123");
            test2 = "ABCD";
        } catch (NumberFormatException ex) {
            System.out.print(ex.getMessage());
        }
    }
}

答案 1 :(得分:4)

你写道:

  

.... 我以后可以使用 ....

这取决于后来意味着什么,如果你的意思是后来,但是在同一种方法中,那么做一些像:

public static void main(String[] args) {
    String test2 = "";
    try {
        int test = Integer.parseInt("123");
        test2 = "ABCD";
    } catch (NumberFormatException ex) {
        System.out.print(ex.getMessage());
    }
}

然后你可以使用像

这样的方法
test2.isEmpty()

检查字符串中的内容是否已更新为 ABCD ...

如果您的意思是稍后但是在另一种静态方法中,那么就这样做。

public class MyApplication  {
    static String test2 = "";
    public static void main(String[] args) {
        try {
            int test = Integer.parseInt("123");
            test2 = "ABCD";
        } catch (NumberFormatException ex) {
            System.out.print(ex.getMessage());
        }
    }
}

答案 2 :(得分:0)

正如其他人所指出的,你有范围问题意味着你的变量Test和Test 2是在try-catch块中声明的。因为这些,您无法在try-catch块之外访问此变量。有几种方法可以解决这个问题,最简单的方法是在主函数声明或类声明之后声明。

public class MyApplication {

    public static void main(String[] args) {
        int TEST = 0;
        String TEST2 = "";

        try {
            TEST = Integer.parseInt("123");
            TEST2 = "ABCD";
        } catch (NumberFormatException ex) {
            System.out.print(ex.getMessage());
        }
    }
}