Java中的简单异常处理

Java中的简单异常处理,java,exception-handling,Java,Exception Handling,你能告诉我我的密码是否正确吗?我两小时后就要准备考试了,所以我真的没有时间写一个应用程序来测试它 问题是:如果我有一个以数字为标签的JLabel。例如,一个简单的标签上写着34。我想从标签上提取号码。但我需要处理例外情况,也就是说,它不是一个数字,可以是一个字母 下面的代码能否正确处理异常 JLabel label = new JLabel("34"); int extracted; 这就是我要做的 try{ extracted = Integer.parseInt(extracted

你能告诉我我的密码是否正确吗?我两小时后就要准备考试了,所以我真的没有时间写一个应用程序来测试它

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

我会查一下文件,看看是否有问题


此外,我强烈建议在您使用的任何IDE中设置一个测试项目,这样您就可以自己快速地测试这些东西了!即使它是一个vim/javac+make脚本。

我也会检查文档中的


此外,我强烈建议在您使用的任何IDE中设置一个测试项目,这样您就可以自己快速地测试这些东西了!即使它是vim/javac+make脚本。

它几乎是正确的,只是捕捉到了错误的异常;抛出NumberFormatException。

这几乎是正确的,只是捕捉到了错误的异常;抛出NumberFormatException。

您应该捕获。否则就好了

你应该抓住。否则就好了

抛出一个not an。

抛出一个not an。

表示它可以抛出NumberFormatException,而不是IOException

您编写的代码将不会编译,因为IOException是一个选中的异常,不能由try块中的任何代码引发。

状态是它可以引发NumberFormatException,而不是IOException

您编写的代码将不会编译,因为IOException是一个已检查的异常,不能由try块中的任何代码引发。

您应该使用NumberFormatException

您应该使用NumberFormatException


关闭,但捕获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");
}

关闭,但捕获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");
}

NumberFormatException是一个RunTimeException(未选中),出于编译目的,您实际上不必将其写入catch部分


如果您要做的是确定用户是否将在JTextField中键入数字(而不是任何其他字符),那么您应该查看regex(正则表达式),而不是使用try来捕获这个数字。。捕捉机制

NumberFormatException是一个RunTimeException(未选中),出于编译目的,您实际上不必将其写入catch部分


如果您要做的是确定用户是否将在JTextField中键入数字(而不是任何其他字符),那么您应该查看regex(正则表达式),而不是使用try来捕获这个数字。。捕捉机制

你到底为什么要这么做?正则表达式必须要慢一些,而且肯定更容易出错。您将失去国际化以及内置实现为您提供的任何其他功能。虽然测试比异常更好,但任何东西都比regexWell好是的,我同意,但代码示例和与国际化相关的原始问题中没有任何东西。我在Recom的基础上只是通过猜测他的意图,这是为了测试输入的字符是否是数字。不过我尊重你对regex的看法。你到底为什么要这么做?正则表达式必须要慢一些,而且肯定更容易出错。您将失去国际化以及内置实现为您提供的任何其他功能。虽然测试比异常更好,但任何东西都比regexWell好是的,我同意,但代码示例和与国际化相关的原始问题中没有任何东西。我在Recom的基础上只是通过猜测他的意图,这是为了测试输入的字符是否是数字。不过我尊重你对regex的看法。