Java: instruction Try-Catch dans une boucle While

Je suis en train d'exécuter un morceau de code qui analyse une entrée de l'utilisateur de la valeur. Cette action est contenue dans une méthode personnalisée que j'ai écrit, nommé getTriangleDim(); la méthode lit dans les utilisateurs int valeur, en vous assurant qu'il est à une certaine distance, puis renvoie la valeur int qui a été saisie. La méthode fonctionne très bien et je n'ai pas de problèmes avec elle.

Le problème se pose lorsque j'entre dans une non-valeur int pour mon getTriangleDim() la méthode. Il me donne une InputMismatchException erreur. J'ai écrit une instruction try-catch dans un do-while pour tenter de résoudre ce problème. Mais c'est la première fois que j'ai jamais utilisé une instruction try-catch, et je suis apparemment manque quelque chose.

Voici le code pour l'instruction try-catch imbriquée à l'intérieur de la boucle while:

//loop to scan for triangle dimension
        boolean bError = true;
        int triangle;

        do{
            try {
                triangle = getTriangleDim();
                bError=false;
                }
            catch (Exception e){
                System.out.println("You did not enter an integer, please enter an integer value");
                triangle = getTriangleDim();

                }
        }while (bError);

si je l'ai tester en entrant une valeur char à la place de l'int, il attrape l'erreur une fois, et ensuite imprime mes "vous n'avez pas....." l'énoncé. Mais si je re-entrer dans un autre non-int nombre, j'obtiens une erreur d'exécution à nouveau que dit.......vous l'aurez deviné........ InputMismatchException erreur.

Le code de ma méthode est ici:

//method for scanning triangle dimensions from keyboard
    public static int getTriangleDim(){
        int triangle = 0;
        Scanner keyboard = new Scanner(System.in);
        do{
        System.out.print("Enter a non-zero integer length (+/-1 - +/-16): ");
        triangle = keyboard.nextInt();
        if((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)))
            System.out.println("Inpute value outside of range");
        }while((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)));
        return triangle;
    }

J'ai besoin de l'-lors de la boucle de continuer, mais je continue à recevoir ces erreurs.

Vous pouvez définir une nouvelle Exception class NotIntegerException extends Exception { .. } et de l'attraper à l'extérieur, pour le distinguer d'un autre type d'exceptions

OriginalL'auteur | 2014-02-25