J'essaie de jeter ma propre énorme instruction lors de la convocation d'un mois de chaîne dans un entier. Je ne sais pas comment jeter l'exception. Toute aide serait appréciée. Dois-je ajouter une capture d'essai avant cette partie du code? J'en ai déjà un dans une autre partie de mon code.
// sets the month as a string mm = date.substring(0, (date.indexOf("/"))); // sets the day as a string dd = date.substring((date.indexOf("/")) + 1, (date.lastIndexOf("/"))); // sets the year as a string yyyy= date.substring((date.lastIndexOf("/"))+1, (date.length())); // converts the month to an integer intmm = Integer.parseInt(mm); /*throw new NumberFormatException("The month entered, " + mm+ is invalid.");*/ // converts the day to an integer intdd = Integer.parseInt(dd); /* throw new NumberFormatException("The day entered, " + dd + " is invalid.");*/ // converts the year to an integer intyyyy = Integer.parseInt(yyyy); /*throw new NumberFormatException("The yearentered, " + yyyy + " is invalid.");*/
3 Réponses :
try { // converts the month to an integer intmm = Integer.parseInt(mm); } catch (NumberFormatException e) { throw new NumberFormatException("The month entered, " + mm+ " is invalid."); }
Oui, vous avez raison parce que si soulevé une runtimédiexception ... mais dans ce contexte, la probabilité est faible. Cependant, vous avez raison.
J'ai sorti les déclarations de lancer et j'ai ajouté ma propre chaîne à l'endroit où j'avais attrapé l'exception plus tôt dans mon code. Catch (NumberFormatException NFE) {System.Out.PrintLN (NFE.GetMessage () + "a une entrée non numérique en entrée");} Merci pour votre entrée!
quelque chose comme ceci: ou, un peu mieux: p>
Le deuxième exemple est agréable car il créera ensemble les exceptions. Vous pouvez donc constater que la cause des arguments illégaux était l'exception au format numéro.
@unbeli j'ai sorti les déclarations de lancer et j'ai ajouté ma propre chaîne à l'endroit où je saisis l'exception plus tôt dans mon code. Catch (NumberFormatException NFE) {System.Out.PrintLN (NFE.GetMessage () + "a une entrée non numérique en entrée");} Merci pour votre entrée
INTEGER.PARSINTING () produit déjà numériquesFormatxception. Dans votre exemple, il semble plus approprié de jeter IllegalargumentException:
J'ai sorti les déclarations de lancer et j'ai ajouté ma propre chaîne à l'endroit où j'avais attrapé l'exception plus tôt dans mon code. Catch (NumberFormatException NFE) {System.Out.PrintLN (NFE.GetMessage () + "a une entrée non numérique en entrée");} Merci pour votre entrée
Qu'est-ce qui se passe avec le code que vous avez commenté?
@Phom je reçois une déclaration inaccessible pour tout code après le lancer.
J'ai sorti les déclarations de lancer et j'ai ajouté ma propre chaîne à l'endroit où j'avais attrapé l'exception plus tôt dans mon code.