首页 > 解决方案 > 未处理的异常,而我清楚地处理 Java 中的异常

问题描述

当我在我的一个小项目上工作时,当我想编译代码时,我偶然发现了 Java 编译器给我的一个奇怪的错误。编译器说我有一个未处理的中断异常。这是因为我使用 Thread.sleep()。在我的代码中,您可以清楚地看到我处理了异常,但编译器仍然坚持我不处理。我没有这样做,我还尝试使用 try/catch 块,但这也没有帮助。奇怪的是,如果我做 buttonpress(); 编译器不会给我一个错误。而不是 generate.setOnAction(e -> buttonpress()); (生成只是一个按钮)。java 抱怨的那一行是我的第一个代码块中的最后一行。这是我的代码:

@FXML
@Override
public void start(Stage primaryStage) throws InterruptedException, IOException {
    window = primaryStage;
    window.setTitle("RNG");
    Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));

    lowerbound = (TextField) root.lookup("#lowerboundinput");
    upperbound = (TextField) root.lookup("#upperboundinput");
    output = (Text) root.lookup("#randomnumberoutput");
    Button generate = (Button) root.lookup("#generatebutton");

    generate.setOnAction(e -> buttonpress());

这是按钮按下方法:

public static void buttonpress()throws InterruptedException{
    if(!lowerbound.getText().equals("")|| !upperbound.getText().equals("")) {
            RandomNumberGenerator.JavaFXLauncher(lowerbound.getText(), upperbound.getText());
    }else{
        setOutput("EMPTY");
    }
}

这里是 JavaFXLauncher 方法:

public static void JavaFXLauncher(String firstbound, String secondbound) throws InterruptedException{
    int random;
    try {
        if(inputvalidator(firstbound, secondbound)) {
            random = Integer.parseInt(firstbound) + (int) (Math.random() * ((Integer.parseInt(secondbound) - Integer.parseInt(firstbound)) + 1));
            Main.setOutput(Integer.toString(random));

            TimeUnit.MILLISECONDS.sleep(50);
            //some other code

} catch(NumberFormatException e){
        Main.setLowerbound("Pick smaller number");
        Main.setUpperbound("Integer overflow");
    } catch (InterruptedException f){

    }

}

标签: javajavafxexception-handling

解决方案


推荐阅读