Search code examples
javaexceptionchecked-exceptions

How do I fix a compilation error for unhandled exception on call to Thread.sleep()?


I am new to Java and kind of new to programming (I know diving straight into Java probably wasn't the greatest idea.) and I've been getting an error consistently no matter how I try to add a pause in my program. I am doing a simple counting program and want to add a one second delay between each number here is the code I have so far:

import java.lang.*;

public class Counter
{
    public static void main(String[]args)
    {
        int i;

        for (i = 0; i <= 10; i++)
        {
            Thread.sleep(1000);
            System.out.println(i);
        }
        System.out.println("You can count to ten.");
    }
}

The call to Thread.sleep() won't compile. The javac compiler says, "unreported exception InterruptedException; must be caught or declared to be thrown" and Eclipse says, "Unhandled exception type InterruptedException"


Solution

  • Thread.sleep can throw an InterruptedException which is a checked exception. All checked exceptions must either be caught and handled or else you must declare that your method can throw it. You need to do this whether or not the exception actually will be thrown. Not declaring a checked exception that your method can throw is a compile error.

    You either need to catch it:

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
        // handle the exception...        
        // For example consider calling Thread.currentThread().interrupt(); here.
    }
    

    Or declare that your method can throw an InterruptedException:

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

    Related