JavaFX 正在运行,但 try-catch-finally 代码不起作用

标签 java exception javafx

我刚刚开始有关异常处理的类(class),我不确定我的代码中做错了什么 - 我的目标是创建一个 UI,询问用户他们拥有多少宠物,并检查如果输入是整数。谁能指出问题所在吗?

我已经尝试使用 label.setText() 作为我的消息,并且我还更改了我使用的异常(我尝试了 NumberFormat)。

这是我使用的 block (这是我第一次遇到 EH,所以我觉得这个主题有点令人困惑)

String value = input.getText();                                  
int intval = 0;
intval = Integer.parseInt(value);
try {
    if (0 >= intval) {
        throw new IllegalArgumentException();
    }
    else 
        throw new InputMismatchException();
}

catch(IllegalArgumentException e)
{
    String outputMessage = "The number must be an integer no less than 0!";
    label1.setText(outputMessage);
}

catch(InputMismatchException i) {
    System.out.println("Please enter an integer.");
    System.out.println("You entered: " + intval);
}

finally
{ 
    System.out.println("You own " + intval + " pets.");
}

我想要包含的异常(exception)情况是,如果用户输入了另一种数字类型而不是整数,以及如果用户输入了负整数而不是正数 1 或 0。我的代码可以运行,但 try-catch block 不会运行真的没用。

最佳答案

看起来这段代码有很多缺陷!首先,如果您将输入作为整数,那么您不应该将输入作为字符串,您可以引发InputMismatchException,通过它您可以轻松地告诉用户“仅输入整数值”,通过将输入作为string 你将无法做到这一点。 不要使用finally block ,因为无论你的代码抛出多少异常,finally block 都会被执行。即使你最后输入-1(在执行代码时),它也会显示“you have -1 pets:”消息,因为无论发生什么,finally block 都会被执行! 我重构了代码,使其以同样的方式工作

Scanner input = new Scanner(System.in);

        boolean exceptionHit = false;

        int value = 0;

        try {
            value = input.nextInt();
            if (value <= 0) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException e) {
            String outputMessage = "The number must be an integer no less than 0!";
            label1.setText(outputMessage);
            exceptionHit = true;

        } catch (InputMismatchException i) {
            System.out.println("Please enter an integer.");
            exceptionHit = true;
        }
        if (exceptionHit == false)
        System.out.println("You have " + value + " pets");

我已经删除了finally block ,这样就不会每次都显示最后一条消息了!我添加了一个 boolean 值而不是它,如果遇到任何异常,该值将设置为 true。

关于JavaFX 正在运行,但 try-catch-finally 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55724093/

相关文章:

java - 为 HBox 设置背景图像 - JavaFX

java - 如何使选项卡 Pane 选项卡在面向左侧时旋转并可见?

java - J2ME 小程序 - 在移动设备的 Web 浏览器中运行 Java

java - 在使用它之前测试弱引用 java

java - RC4 算法的 KeyGenerator 异常

java - 错误代码=-4220 且 SQLSTATE= null

python - 在 Python 的交互式 shell 中处理没有 try block 的异常

java - 允许将状态更新发布到多个站点的 API?

Java:如何删除匿名 ActionListener?

JavaFX:如何将计算的整数值添加到 TableColumn