Exception interceptée mais le programme continue de fonctionner
Je suis en train de travailler sur mon premier projet Java mise en œuvre d'une classe appelée "HeartRates" qui prend de l'utilisateur, date de naissance et retourne leur max et la fréquence cardiaque cible. Tout dans le principal programme de test fonctionne, sauf pour une chose, je ne peux pas comprendre comment arrêter le reste du code de l'impression après que l'exception est interceptée.
Je ne suis pas vraiment sûr de toute la partie du code où l'exception est interceptée parce qu'il a été copié et collé à partir de ce que le professeur nous a donné. Si quelqu'un peut me dire comment mettre fin au programme après une erreur se produit, ou d'imprimer un message d'erreur personnalisé et d'arrêter le programme à partir de l'exécution de plus, j'apprécierais.
Voici le code:
import java.util.Scanner;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
public class HeartRatesTest {
public static void main(String[] args) {
HeartRates test= new HeartRates();
Scanner input = new Scanner( System.in );
GregorianCalendar gc = new GregorianCalendar();
gc.setLenient(false);
JOptionPane.showMessageDialog(null, "Welcome to the Heart Rate Calculator");;
test.setFirstName(JOptionPane.showInputDialog("Please enter your first name: \n"));
test.setLastName(JOptionPane.showInputDialog("Please enter your last name: \n"));
JOptionPane.showMessageDialog(null, "Now enter your date of birth in Month/Day/Year order (hit enter after each): \n");
try{
String num1= JOptionPane.showInputDialog("Month: \n");
int m= Integer.parseInt(num1);
test.setMonth(m);
gc.set(GregorianCalendar.MONTH, test.getMonth());
num1= JOptionPane.showInputDialog("Day: \n");
m= Integer.parseInt(num1);
test.setDay(m);
gc.set(GregorianCalendar.DATE, test.getDay());
num1= JOptionPane.showInputDialog("Year: \n");
m= Integer.parseInt(num1);
test.setYear(m);
gc.set(GregorianCalendar.YEAR, test.getYear());
gc.getTime(); //exception thrown here
}
catch (Exception e) {
e.printStackTrace();
}
String message="Information for "+test.getFirstName()+" "+test.getLastName()+": \n\n"+"DOB: "+ test.getMonth()+"/" +test.getDay()+ "/"
+test.getYear()+ "\nAge: "+ test.getAge()+"\nMax Heart Rate: "+test.getMaxHR()+" BPM\nTarget Heart Rate(range): "+test.getTargetHRLow()
+" - "+test.getTargetHRHigh()+" BPM";
JOptionPane.showMessageDialog(null, message);
}
showMessageDialog
à l'intérieur de try {}
blocOriginalL'auteur Mike | 2012-06-09
Vous devez vous connecter pour publier un commentaire.
Pas vraiment sûr de savoir pourquoi vous voulez mettre fin à l'application après l'exception est interceptée - ne serait-il pas mieux de réparer ce qui n'allait pas?
En tout cas, dans votre bloc catch:
OriginalL'auteur
Dans le
catch
bloc, utilisez le mot-cléreturn
:ou peut-être vous voulez mettre la dernière
JOptionPane.showMessageDialog
à la fin de latry
bloc.OriginalL'auteur
C'est vrai que le retour allait se passer pour arrêter l'exécution de ce programme (en principal). Le plus général, la réponse devrait être si vous ne pouvez pas gérer un type particulier d'exception dans une méthode, vous devriez être en déclarant que vous jetez par ladite exception, ou vous devez envelopper votre Exception avec une sorte de RuntimeException et de jeter que de la couche supérieure.
Système.exit() également sur le plan technique fonctionne, mais dans le cas d'un système plus complexe devrait être évitée (votre interlocuteur peut être en mesure de gérer l'exception).
tl;dr version:
OriginalL'auteur