【问题标题】:Java TimeUnit errorJava 时间单位错误
【发布时间】:2015-04-24 11:54:44
【问题描述】:

我想用 Numberfields 和一个按钮制作一个 Java 程序。 当您单击按钮时,它会等待输入数字字段的时间。整数工作正常,但该功能不起作用。

代码如下:

public void jButton1_ActionPerformed(ActionEvent evt) {
    sekunden = Integer.parseInt(jNumberField3.getText()); 
    minuten = Integer.parseInt(jNumberField2.getText());
    stunden = Integer.parseInt(jNumberField1.getText());
    zeit = sekunden + minuten*60 + stunden*60*60;//berechnet die zeit in sekunden
    TimeUnit.SECONDS.sleep(zeit);//here is the error
    System.out.println("zeit");
} // end of jButton1_ActionPerformed

错误信息如下所示:

ES.java:78:27: error: unreported exception InterruptedException; must be caught or declared to be thrown TimeUnit.SECONDS.sleep(zeit);

【问题讨论】:

  • 您能否分享您的 zeit decleration 和从调试模式获取的 zeit 样本值?
  • 你需要在 sleep 函数上使用 try-catch。如果在睡眠期间调用 Thread.interrupt,则睡眠会引发 InterruptedException。当您在 Google 上搜索“未报告的异常 InterruptedException;必须被捕获或声明为抛出”时,此信息可用;;此外,您可以简单地使“jButton1_ActionPerformed”函数抛出错误,但您需要在后一步处理它[错误](调用此函数的生成函数)
  • 声明和测试所有变量

标签: java exception time jbutton


【解决方案1】:

方法调用TimeUnit.SECONDS.sleep(zeit) 抛出一个InterruptedException 必须被捕获:

public void jButton1_ActionPerformed(ActionEvent evt) {
   try {
    sekunden = Integer.parseInt(jNumberField3.getText()); 
    minuten = Integer.parseInt(jNumberField2.getText());
    stunden = Integer.parseInt(jNumberField1.getText());
    zeit = sekunden + minuten*60 + stunden*60*60;//berechnet die zeit in sekunden
    TimeUnit.SECONDS.sleep(zeit);//here is the error
    System.out.println("zeit");
    }catch (InterruptedException e){
      //handle the exception
   }
}

【讨论】:

    【解决方案2】:

    您需要处理潜在的InterruptedException,当您调用sleep() 时可能会发生这种情况。这就是您的代码出现编译错误的原因。

    请查看 JavaDocs 上的 Catching and Handling Exceptions 以了解有关异常处理的更多详细信息。

    在您的情况下,您可以通过处理以下异常轻松解决它:

    public void jButton1_ActionPerformed(ActionEvent evt) {
        sekunden = Integer.parseInt(jNumberField3.getText()); 
        minuten = Integer.parseInt(jNumberField2.getText());
        stunden = Integer.parseInt(jNumberField1.getText());
        zeit = sekunden + minuten*60 + stunden*60*60;//berechnet die zeit in sekunden
        try {
            // tries to call sleep
            TimeUnit.SECONDS.sleep(zeit);//here is the error
        } catch (InterruptedException e) {
            // handles any possible exception during the call to "sleep()"
            e.printStackTrace(); // prints the exception stack trace to the console
        }
        System.out.println("zeit");
    } // end of jButton1_ActionPerformed
    

    异常处理中的一些很好的参考是:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多