Je crée un analyseur de base de base avec Java et que cela me révèle ma compréhension peu profonde de la manutention d'exception Java.
Lorsque j'ai cette entrée: p> et J'appelle par la suite: p> L'IDE me force à entourer d'un essai / attraper comme: p> Toutefois, Afin de forcer cela à être une exception fatale, il semble que je dois ajouter mon propre code à appeler Je ne suis pas sûr de comprendre la syntaxe derrière tout cela, surtout pourquoi je dois utiliser un bloc d'essai / attraper autour de lancer une exception. P> Quelle est la rime et la raison derrière cela? < / p> au lieu de jeter l'exception, je pourrais le faire à la place: p> au lieu d'appeler p> Je suppose que ma question est - s'il s'agit d'une exception fatale, quelle est la meilleure façon de le rendre vraiment fatal tout en donnant à l'utilisateur le meilleur retour? strong> p> p> P> system.exit () code>, comme: p>
4 Réponses :
En supposant que votre exception est actuellement une sous-classe d'exception, qui est une exception vérifiée, vous devez gérer dans une prise d'essai. Si vous pouvez faire une exception une exception une exception, vous n'avez plus besoin de faire les trucs de tressation. P>
Quelle est la meilleure façon de le rendre véritablement fatal en donnant à l'utilisateur le Meilleur retour? P> blockQuote>
Personnellement, je ne pense pas qu'une parenthèse manquante devrait être une exception fatale. L'utilisateur devrait avoir la possibilité de réessayer. P>
Cependant, si vous voulez vraiment savoir, il n'est pas possible avec
java code> pour créer une exception fatale personnalisée comme une exception fatale signifie que quelque chose s'est mal passé sur le système / JVM, non sur le programme lui-même. Néanmoins, vous devriez changersystem.exit (0) code> àsystem.exit (1) code> ou tout ce qui n'est pas égal à0 code> en tant que programme sortant de 0 Comme le code d'erreur signifie que tout s'est passé à droite, ce qui n'est pas la définition d'une exception. P>Je ne suis pas sûr de comprendre la syntaxe derrière tout cela p> blockQuote>
Fondamentalement, ce que vous faites ici, c'est lancer une exception pour que vous ayez deux choix, ce qui l'attrape ou le rejette de toute façon, il faudra être attrapé quelque part. Ensuite, dans le
attrape code> Vous mettez simplement la fin du programme renvoyant un code d'erreur signifiant que quelque chose a échouésystem.exit (1) code> p>Voir ce différence de système. sortie (0), system.exit (-1), system.exit (1) dans Java pour une meilleure compréhension du code d'erreur. P>
Si vous souhaitez avoir une exception cochée em> que vous devez attraper - mais pas tout de suite, vous pouvez définir Vous pouvez également le définir comme la cause de em> d'un si votre Habituellement, l'utilisateur recevra la trace de la pile ou au moins le message d'erreur, bien que ce dépend bien sûr ou de la manipulation des erreurs plus loin dans la ligne. Notez que même Ainsi, à la fin: Utilisez lance mangeRightparenException code> dans la signature de vos méthodes. < Pré> xxx pré> runtimédiexception code> mais qui ne semble pas une bonne correspondance pour votre problème actuel. < / p> mangeRightparenException code> classe s'étend runtimeexception code> alors vous n'avez pas à l'attraper. Le message va relever toutes les méthodes où elle (ou ses classes parentes telles que jetables code>, exception code> et runtimeexception code>) n'est pas explicitement prise. vous ne devez toutefois pas utiliser runtimeexception code> s pour les erreurs liées à l'entrée. em> p> principal code> n'a pas à gérer des exceptions. Vous pouvez simplement spécifier lancer une exception code> pour la méthode code> principale code> pour que la console soit la console recevoir les traces de pile. P> lancers code> dans la signature de vos méthodes au lieu d'attraper des exceptions avant de vouloir les gérer. p> p>
PS La première chose que je fais lors de la configuration de mon IDE remplace le E.PrintStackTrace () code> avec // TODO PICE EXCEPTION CORRECTEMENT CODE> suivi de Jetez une nouvelle nouvelle valeur illégale ("exception) pas encore correctement manipulé ", e); code>. Vous ne «tomberez pas» et que cela ne gâche donc pas votre flux de contrôle.
Si Avez-vous pensé à un manquantRightParenException code> est une exception vérifiée (ce qui semble être le cas, sinon votre IDE ne serait pas "naging"), puis vous devez l'envelopper à l'intérieur d'un . . attrapez le bloc code> ou déclarez-le via un lance la clause code> dans la définition de la méthode. Ce dernier vous permet de "baisser" l'exception et de la prise dans l'appelant de votre méthode jetant la manquantRightparenException code> exception. P>
lance code> clause? p>