Je souhaite créer un programme qui gère les 3 exceptions possibles qui se produisent lors de la division de deux nombres, en demandant à l'utilisateur de corriger l'entrée s'il déclenche une exception. Le code s'exécute uniquement si aucune exception n'est déclenchée. Le code suivant fonctionne, mais je pense que c'est trop peu optimisé. N'y a-t-il pas d'autre moyen, en dehors des boucles en boucle, de vérifier en permanence les exceptions?Optimisation du traitement des exceptions dans Java
import javax.swing.JOptionPane;
public class DivisionExceptions {
public int divide(int num, int den) {
return num/den;
}
public static void main(String[] args) {
int num = 0,
den = 0,
a = 0,
b = 0,
c = 0;
DivisionExceptions div = new DivisionExceptions();
while(a == 0) {
try {
num = Integer.parseInt(JOptionPane.showInputDialog("Introduce the first int"));
a++;
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Error of type: " + e.getMessage() + ". Verify the information and try again.");
}
}
while (c == 0) {
b = 0;
while(b == 0) {
try {
den = Integer.parseInt(JOptionPane.showInputDialog("Introduce the second int"));
b++;
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Error of type: " + e.getMessage() + ". Verify the information and try again.");
}
}
try {
JOptionPane.showMessageDialog(null, "Result of dividing: " + num + "/" + den + " is " + div.divide(num, den));
c++;
}
catch (ArithmeticException e) {
JOptionPane.showMessageDialog(null, "Error of type: " + e.getMessage() + ". Verify the information and try again.");
}
}
}
}
Tout va bien, toute optimisation que vous faites sera complètement imperceptible. Vous pourriez vouloir nettoyer votre espacement de tabulation cependant. –
Quand il y a une exception ArithmeticException, ils peuvent seulement revenir en arrière pour essayer une autre valeur pour 'den', mais pas' num'. Est-ce l'intention? – jingx
@jingx oui, c'est l'intention, puisqu'il n'y a aucune raison de modifier le numérateur si le dénominateur est 0. – Razonixx