我对try-catch有一点问题。
我的目标是从try块中获取test
和test2
值,以后我可以使用它。
如何处理?
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());
}
}
}
答案 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());
}
}
}