Voila, dans mon action performed, au coeur d'un de mes (if e.getSource()==truc), je fais une vérification du contenu d'une saisie de nombre. Si la string contient des caractères, j'attrape une NumberFormatException. Et si la string contient bien un nombre mais qu'il est hors des limites autorisées par le programme, je voudrais lancer une LargeurInvalideException. Problème, Eclipse me dit alors :
" Exception LargeurInvalideException is not compatible with throws clause in ActionListener.actionPerformed(ActionEvent)"
Comment faire?
Autre question : comment détourner Eclipse pour que au lieu de capter la NumberFormatException, il capte la SaisieInvalideException que j'ai définie?
Voici les codes :
- des exceptions :
- le code du action performed :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /** * Définition d'une classe interne pour gérer les exceptions lorsque que l'on saisit * une largeur inférieure à 2 ou supérieure à 15 */ class LargeurInvalideException extends Exception{} /** * Définition d'une classe interne pour gérer les exceptions lorsque que l'on saisit * une largeur invalide (caractères non numériques) */ class SaisieInvalideException extends Exception{}
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 public void actionPerformed(ActionEvent e) throws LargeurInvalideException Object o = e.getSource(); /*bla bla bla*/ if(o==okgral){ try{ boolean saisiecorrecte=false; String reponse = txttaillegrille.getText(); if(Integer.parseInt(reponse)<2 || Integer.parseInt(reponse)>15){ JOptionPane.showMessageDialog(this, "La largeur que vous avez saisie est invalide, veuillez entrer une largeur comprise entre 2 et 15", "avertissement",JOptionPane.WARNING_MESSAGE); txttaillegrille.setText(""); fgrilleal.setAlwaysOnTop(true); } else { saisiecorrecte=true; } if(saisiecorrecte){ /*bla bla*/ } } catch (NumberFormatException NFE) { JOptionPane.showMessageDialog(this, "Vous avez saisi des caractères non numériques. \nVeuillez effectuer une nouvelle saisie.", "Avertissement : saisie invalide", JOptionPane.WARNING_MESSAGE); txttaillegrille.setText(""); fgrilleal.setAlwaysOnTop(true); } }
Partager