如果我的代码是正确的,你能告诉我吗?我在两小时内学习我的考试,所以我没有时间写一个应用程序来测试它。
问题是:如果我有一个带有数字作为标签的JLabel。只是一个标签,例如34。我想从标签中提取数字。但我需要处理异常,即它不是一个数字,它可以是一封信。
我的代码会在下面正确处理异常吗?
JLabel label = new JLabel("34");
int extracted;
这就是我要做的事情
try{
extracted = Integer.parseInt(extracted.getText());
System.out.println("the number was: "+ extracted);
}
catch(IOException exception){
System.out.println(label.getText() + " is not a number");
}
答案 0 :(得分:8)
关闭,但是捕获IOException将不起作用,因为parseInt()方法不会抛出该异常类型。请尝试捕获NumberFormatException:
try{
extracted = Integer.parseInt(extracted.getText());
System.out.println("the number was: "+ extracted);
} catch(NumberFormatException exception) {
System.out.println(label.getText() + " is not a number");
}
答案 1 :(得分:6)
此外,我强烈建议您在所使用的任何IDE中设置测试项目,以便您可以通过快速周转来自行测试这些内容!即使它是vim / javac + make脚本。
答案 2 :(得分:2)
这几乎是正确的,除了你正在捕捉错误的异常; parseInt()抛出NumberFormatException。
答案 3 :(得分:1)
答案 4 :(得分:1)
NumberFormatException是一个RunTimeException(未选中),出于编译目的,你实际上不必在catch部分写它。
如果你要做的是确定用户是否会在JTextField中输入数字(而不是任何其他字符),你应该看看正则表达式(正则表达式),而不是使用try .. catch来捕获这个机制。
答案 5 :(得分:0)
你应该抓住NumberFormatException
。不然,好的。
答案 6 :(得分:0)
javadoc for Integer.parseInt()表示它可以抛出NumberFormatException,而不是IOException。
您编写的代码将无法编译,因为IOException是一个经过检查的异常,不能被try块中的任何代码抛出。
答案 7 :(得分:0)