未处理的异常?

时间:2015-02-02 05:19:15

标签: java

我花了好几个小时试图解决这个问题;我是Java新手,我似乎无法找出为什么java Thread函数抛出异常错误。任何人都可以向我解释这一点。

import java.util.Calendar;
import java.util.Date;

public class Loops {

    public static void main(String [] args) {



        Date today = new Date();
        System.out.println(today);

        Calendar cal = Calendar.getInstance();
        cal.set(2015, 1, 1, 0, 3, 0);

        while (today.before(cal.getTime()))
        {
            System.out.println("Waiting");
            Thread.sleep(1000);
            today = new Date();
            System.out.println(today);
        }

        System.out.println("Done");


    }

}

1 个答案:

答案 0 :(得分:1)

查看Thread.java API,方法sleep();会抛出异常。

public static native void sleep(long millis) throws InterruptedException;

因此需要catch the exceptionre-throw the exception

抛出异常

public static void main(String[] args) throws InterruptedException {

        Date today = new Date();
        System.out.println(today);

        Calendar cal = Calendar.getInstance();
        cal.set(2015, 1, 2, 0, 3, 0);

        while (today.before(cal.getTime())) {
            System.out.println("Waiting");
            Thread.sleep(1000);
            today = new Date();
            System.out.println(today);
        }

        System.out.println("Done");

    }

捕获例外

 public static void main(String[] args) {

        Date today = new Date();
        System.out.println(today);

        Calendar cal = Calendar.getInstance();
        cal.set(2015, 1, 2, 0, 3, 0);

        while (today.before(cal.getTime())) {
            System.out.println("Waiting");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            today = new Date();
            System.out.println(today);
        }

        System.out.println("Done");

    }