Java中的简单异常处理

时间:2009-04-09 15:56:11

标签: java exception-handling

如果我的代码是正确的,你能告诉我吗?我在两小时内学习我的考试,所以我没有时间写一个应用程序来测试它。

问题是:如果我有一个带有数字作为标签的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");
}

8 个答案:

答案 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)

我会查看Integer.parseInt()

的文档

此外,我强烈建议您在所使用的任何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)