web-dev-qa-db-fra.com

Comment puis-je corriger une erreur de compilation pour une exception non gérée lors de l'appel à Thread.sleep ()?

Je suis nouveau sur Java et un peu nouveau sur la programmation (je sais plonger directement dans Java n'était probablement pas la meilleure idée)) et j'ai été obtenir une erreur de manière cohérente, peu importe la façon dont j'essaye d'ajouter une pause dans mon programme. Je fais un programme de comptage simple et je veux ajouter un délai d'une seconde entre chaque numéro, voici le code que j'ai jusqu'à présent:

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.");
    }
}

L'appel à Thread.sleep() ne sera pas compilé. Le compilateur javac dit, "exception non signalée InterruptedException; doit être interceptée ou déclarée comme levée" et Eclipse dit, "type d'exception non gérée InterruptedException"

23
Mr.Crippled

Thread.sleep peut lever une InterruptedException qui est une exception vérifiée. Toutes les exceptions vérifiées doivent soit être interceptées et gérées, soit vous devez déclarer que votre méthode peut la lever. Vous devez le faire, que l'exception soit levée ou non. Ne pas déclarer une exception vérifiée que votre méthode peut lever est une erreur de compilation.

Vous devez soit l'attraper:

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

Ou déclarez que votre méthode peut lancer un InterruptedException:

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

Connexes

56
Mark Byers