Hello,

Je fais un programme ou j'ai une boucle try/catch dans une boucle do/while. A un moment du programme je test si le nombre est plus petit que 0 et avec le try catch j’empêche le plantage du programme quand on entre une lettre.
Quand j'entre une lettre dans la console, le try/catch écris mon message mais le programme quitte la boucle. Y a t'il un moyen de rester dans la boucle ?

Voici le code de la zone ou j'ai un problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
                //Lecture du nombre choisi + test
                do
                {
                    try
                    {
                        Console.Write("Veuillez saisir un nombre entre {0} et {1} : ", NB_MIN, NB_MAX);
                        iNombreSaisie = Convert.ToInt32(Console.ReadLine());
                    }
                    catch
                    {
                        Console.WriteLine("ERROR !!");
                    }
                }
                while (iNombreSaisie < 0 || iNombreSaisie > NB_MAX);
Voici le programme complet si besoin:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Roulette_3._0
{
    class Program
    {
        const int NB_MIN = 1;
        const int NB_MAX = 10;
        const int SOLDE_DEFAUT = 1000;
        static void Main(string[] args)
        {
            //Annonce des variables
            int iNombreSaisie = 0;
            int iNombreTire;
            int iNewSolde = SOLDE_DEFAUT;
            int iCompteur;
            int iTroll;
            int iMontantMise = 0;
            string strReponse = "a";
 
            do
            {
                //Nombre aléatoire
                Random n = new Random();
                iNombreTire = NB_MIN + n.Next(NB_MAX - NB_MIN);
 
                Console.Write("Roulette du swag version 2.0 !");
                Console.Write("\n------------------------------");
                Console.WriteLine("\nVotre solde est de {0}", iNewSolde);
 
                //Lecture du nombre choisi + test
                do
                {
                    try
                    {
                        Console.Write("Veuillez saisir un nombre entre {0} et {1} : ", NB_MIN, NB_MAX);
                        iNombreSaisie = Convert.ToInt32(Console.ReadLine());
                    }
                    catch
                    {
                        Console.WriteLine("ERROR !!");
                    }
                }
                while (iNombreSaisie < 0 || iNombreSaisie > NB_MAX);
 
                //Lecture de la mise + test
                do
                {
                    try
                    {
                        Console.Write("Veuillez saisir un montant entre 1 et {0} : ", iNewSolde);
                        iMontantMise = Convert.ToInt32(Console.ReadLine());
                    }
                    catch
                    {
                        Console.WriteLine("ERROR !!");
                    }
                }
                while (iMontantMise < 1 || iMontantMise > iNewSolde);
 
                //Affichage nombre aléatoires
                for (iCompteur = 0; iCompteur < 35; iCompteur++)
                {
                    Random r = new Random();
                    iTroll = r.Next(NB_MAX + 1);
                    Console.Clear();
                    Console.Write("Roulette du swag version 2.0 !");
                    Console.Write("\n------------------------------");
                    Console.WriteLine("\nVotre solde est de {0}", iNewSolde);
                    Console.WriteLine("Veuillez saisir un nombre entre {0} et {1} : {2}", NB_MIN, NB_MAX, iNombreSaisie);
                    Console.WriteLine("Veuillez saisir un montant entre 1 et {0} : {1}", iNewSolde, iMontantMise);
                    Console.WriteLine("Nombre tiré: {0}", iTroll);
                    System.Threading.Thread.Sleep(20);
                    Console.Clear();
                }
 
                //Affichage du nombre tiré par le programme
                Console.Write("Roulette du swag version 2.0 !");
                Console.Write("\n------------------------------");
                Console.WriteLine("\nVotre solde est de {0}", iNewSolde);
                Console.WriteLine("Veuillez saisir un nombre entre {0} et {1} : {2}", NB_MIN, NB_MAX, iNombreSaisie);
                Console.WriteLine("Veuillez saisir un montant entre 1 et {0} : {1}", iNewSolde, iMontantMise);
                Console.WriteLine("Nombre tiré: {0}", iNombreTire);
 
                //Test si gagné/perdu
                if (iNombreSaisie == iNombreTire)
                {
                    iNewSolde += iMontantMise * 10;
                    Console.WriteLine("Gagné !\nVotre nouveau solde est de {0}.-", iNewSolde);
                }
                else
                {
                    iNewSolde -= iMontantMise;
                    Console.WriteLine("Perdu !\nVotre nouveau solde est de {0}.-", iNewSolde);
                }
 
                //Test si solde > 0, si oui demande si rejouer
                if (iNewSolde > 0)
                {
                    do
                    {
                        Console.Write("Voulez vous rejouer ? o/n: ");
                        strReponse = Console.ReadLine();
                    }
                    while (strReponse != "o" && strReponse != "n");
                }
                else
                {
                    Console.Clear();
                    Console.WriteLine("Vous avez tout perdu !\nAu revoir et merci");
                }
                if (strReponse == "o")
                {
                    Console.Clear();
                }
                else
                {
                    Console.Clear();
                    if (iNewSolde < SOLDE_DEFAUT)
                    {
                        Console.WriteLine("Vous avez perdu {0}.-", SOLDE_DEFAUT - iNewSolde);
                        Console.WriteLine("\nVous repartez avec {0}.-", iNewSolde);
                        Console.Write("Au revoir, à bientôt !!");
                    }
                    else
                    {
                        Console.WriteLine("Vous avez gagné {0}.-", iNewSolde - SOLDE_DEFAUT);
                        Console.WriteLine("Vous repartez avec {0}", iNewSolde);
                        Console.Write("Au revoir, à bientôt !!");
                    }
                }
            }
            while (strReponse == "o");
            Console.ReadKey();
        }
    }
}