Lancer en Java
Ecrivez vous-meme l'arret avec throw. Ouvrez Signal.java et lancez IllegalArgumentException avec le message empty avant toute impression de water. Compilez avec javac Signal.java et lancez java Signal. Le programme s'arrete sur la ligne throw ; water ne s'imprime pas. Une deuxieme demo met cups a 0 pour que un if entre et lance. Une troisieme met cups a 3 pour que le if soit saute et l'ecran affiche water. Laissez la lecture de fichiers pour la page suivante.
Vous ecrivez l'arret
Les pages precedentes montraient un arret parce qu'une ligne a casse une regle — un mauvais index de tableau a lance ArrayIndexOutOfBoundsException. Cette page va dans l'autre sens. Vous choisissez le type d'exception et ecrivez throw pour que l'arret soit volontaire. Ouvrez un fichier d'enseignement nomme Signal.java. Gardez le nom de classe publique Signal pour qu'il corresponde au fichier. Supprimez les demos catch restantes de Guard, les arrets de tableau Alarm et tout Scanner ou nextLine. Le programme ne doit pas attendre le clavier. Cette page n'a pas besoin de ligne import.
Dans main, lancez avant toute impression calme de succes :
throw new IllegalArgumentException("empty");
Puis gardez une impression qui ne doit pas s'executer quand le throw part :
System.out.println("water");
Les mots entre guillemets sont le message. Le nom du type est IllegalArgumentException. Vous ne divisez pas par zero et vous ne lisez pas slots[5]. L'arret est la parce que vous avez ecrit throw.
public class Signal {
public static void main(String[] args) {
throw new IllegalArgumentException("empty");
// water would not run after throw
}
}
Dans le dossier qui contient Signal.java, lancez javac Signal.java. Quand parentheses, accolades et points-virgules correspondent, javac n'ecrit pas sa propre ligne. Puis java Signal — pas java Signal.java. Retirez le suffixe .java de la commande d'execution.
L'execution s'arrete sur la ligne throw. Le terminal nomme IllegalArgumentException et montre le message empty. Une impression de water apres ce throw ne s'execute pas, car le programme est deja arrete. Si vous gardez un System.out.println("water"); inaccessible apres le throw dans le meme main, certains compilateurs avertissent que l'impression est inaccessible ; l'idee pedagogique reste : apres throw, les lignes normales de ce chemin ne s'executent pas. Preferez le fichier throw nu sans impression morte si javac se plaint — l'arret lui-meme est la lecon.
Si le terminal attend le clavier, un appel nextLine d'un vieil exercice reste dans un fichier. Supprimez-le. Si vous voyez blocked puis after, vous executez encore un fichier catch Guard — passez a java Signal. Si vous voyez ArrayIndexOutOfBoundsException depuis slots[5], un reste Alarm est encore actif ; remplacez-le par la ligne throw de cette lecon.
Zero cups entre dans le if et lance
Un deuxieme programme repart de zero. Stockez cups a 0. Si cups est inferieur a 1, lancez la meme IllegalArgumentException avec le message empty. Gardez une impression de water apres le if.
public class Signal {
public static void main(String[] args) {
int cups = 0;
if (cups < 1) {
throw new IllegalArgumentException("empty");
}
System.out.println("water");
}
}
Compilez avec javac Signal.java, puis lancez java Signal. Zero est inferieur a un, donc le if est entre et throw s'execute. L'ecran montre le meme arret : IllegalArgumentException et empty. Le mot water ne s'imprime pas. Rien sur cette page n'attrape l'arret, le programme s'y termine. C'est volontaire — la page precedente a pratique catch ; celle-ci pratique l'ecriture du throw.
Parcourez les accolades une fois. La ligne throw est dans le bloc if. L'impression water est hors du if. Quand throw s'execute, le programme est deja arrete, donc water n'est jamais atteint. L'indentation et les accolades mettent le throw dans le test.
Trois cups sautent throw et affichent water
Un troisieme programme repart aussi de zero. Mettez cups a 3. Gardez le meme if, le meme throw et la meme impression water.
public class Signal {
public static void main(String[] args) {
int cups = 3;
if (cups < 1) {
throw new IllegalArgumentException("empty");
}
System.out.println("water");
}
}
Compilez et lancez encore avec javac Signal.java et java Signal. Trois n'est pas inferieur a un, donc le if n'est pas entre. Le throw ne s'execute jamais. L'ecran affiche water. Il n'y a pas d'arret. Ce contraste est le point de controle : le throw ne part que lorsque votre condition dit que la valeur n'est pas utilisable.
N'inventez pas de catch autour de ces fichiers d'enseignement sur cette page. Vous avez deja pratique catch sur Guard. Ici vous devez voir l'arret que vous avez ecrit et le chemin qui saute le throw. Ne remplacez pas non plus IllegalArgumentException par ArrayIndexOutOfBoundsException pour des cups vides — ce nom appartenait a un mauvais index, pas a un controle de valeur que vous avez ecrit avec throw.
Le nom que vous avez ecrit
Le type que vous avez lance est IllegalArgumentException, pas ArrayIndexOutOfBoundsException ni le mot nu empty comme type. Le message empty est ce que vous avez choisi d'afficher a cote du nom. Si vous attrapez cet arret plus tard, la clause catch doit nommer IllegalArgumentException. Un catch pour NullPointerException ne le traiterait pas. Cette pratique de catch n'est pas requise sur ces fichiers Signal aujourd'hui.
IllegalArgumentException est une exception d'execution courante pour les debutants, donc ces petites demos main n'ont pas besoin de clause throws sur main. Restez avec ce type et ce message clairs. Vous n'avez pas besoin d'un catalogue de chaque classe lançable avant que la page suivante ouvre un fichier.
Compare au catch sur Guard
Sur la page try-catch, java Guard a gere un mauvais index et a continue jusqu'a after. Sur cette page, java Signal provoque un arret volontairement et ne l'attrape pas. L'histoire du tableau est passee. Gardez les fichiers Guard seulement comme vieilles demos si elles restent proches ; lancez java Signal pour les demos throw afin que l'ecran corresponde a cette lecon.
Ce que cette page laisse pour files
Cette page montre seulement que vous provoquez un arret avec throw. La page suivante commence la lecture d'un fichier. Restez avec l'ecriture de l'arret et son saut quand cups est utilisable. N'ouvrez pas encore de fichier comme exigence sur ces demos Signal.
Avant files
Vous pouvez lancer IllegalArgumentException("empty") et voir l'execution s'arreter avant water. Avec cups a 0, le if entre et le meme arret se produit. Avec cups a 3, throw ne s'execute pas et l'ecran affiche water. Compilez Signal.java et lancez java Signal pour chaque demo gardee a tour de role. Le nom de cet arret est IllegalArgumentException. La page suivante est la lecture d'un fichier.
Gardez le throw nu pour un arret clair que vous avez ecrit. Gardez la paire cups pour une condition qui peut sauter le throw. Gardez la lecture de fichiers hors de cette page. Ces trois habitudes sont le controle avant de continuer. Quand water n'apparait que sur l'execution cups-a-trois de java Signal, throwing a fait son travail pour cette lecon et vous etes pret pour le sujet suivant sur les fichiers.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut