Changer le code de capture généré automatiquement dans Eclipse?
si J'ai une exception non contrôlée en Java, Eclipse me propose deux options: (1) Ajouter la déclaration des lancements et (2) entourer avec try/catch.
Si je choisis (2) il ajoute un code
try {
myfunction();
} catch (MyUnhandledException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
je veux le changer
try {
myfunction();
} catch (MyUnhandledException e) {
throw new RuntimeException(e);
}
Est-ce possible?
UPDATE
Pourquoi tant d'amour pour changer le sujet de personnes???
si l'exception est catchée et imprimée, il n'est plus nécessaire de l'attraper. J'aime ma demande d'annulation si j'oublie de gérer une exception par erreur. Donc, je tiens à relever par défaut.
4 réponses
Oui, vous pouvez changer le code par défaut ajouté par Eclipse.
- dans Préférences, naviguez vers Java>Style De Code De Code>Modèles.
- Code, sélectionnez bloc Catch corps.
- appuyez sur le bouton Modifier pour changer le code. Lorsque vous avez terminé, appuyez sur la OK bouton.
envisagez d'ajouter un commentaire TODO dans le bloc de capture par défaut. Par exemple, la valeur par défaut comprend:
// ${todo} Auto-generated catch block
Personnellement, j'utilise un générique idiome quel que soit le réel vérifié type d'exception, vous pourriez faire de l'Éclipse de l'utiliser comme un modèle, à la place:
try {
...
}
catch (RuntimeException e) { throw e; }
catch (Exception e) { throw new RuntimeException(e); }
le point est d'envelopper le bloc de code entier au lieu d'individuellement chaque ligne qui peut jeter une exception. Le bloc peut lancer n'importe quel nombre d'exceptions vérifiées et non vérifiées, et cela permettra aux exceptions non vérifiées de passer à travers indemnes, et les exceptions vérifiées seront enveloppées.
si vous rejouez votre exception de la clause catch, alors vous devrez gérer dans la méthode qui a invoqué votre méthode courante. Mais si vous enveloppez votre exception dans RuntimeException
, vous n'aurez pas besoin de le gérer. Mais pourquoi voudriez-vous faire cela?
je veux dire, pourquoi ne pas simplement: -
try {
myfunction();
} catch (MyUnhandledException e) {
throw e;
}
parce que, dans votre code, en gros vous enveloppez un pourrait être checked exception
dans un unchecked one
. Si je suppose que votre MyUnhandledException
checked exception
.
et notez aussi que, si vous êtes suivant cette approche, vous auriez encore besoin de declare it
thrown
dans votre throws clause
.
si vous voulez juste faire comme vous le faites, alors aussi il fonctionnera très bien. Vous pouvez modifier le Eclipse setting
selon la réponse de @Andy.
mais, il vaudrait mieux regarder votre dessin. Pourquoi la méthode surdéfini lancer une exception non déclarée dans votre overriden
méthode. Il y a probablement quelque chose qui ne va pas, qui devrait être corrigé.
Vous êtes probablement au courant de cela... mais si vous voulez vous débarrasser de tous les encombrements embêtants et les irritations des exceptions vérifiées, pourquoi ne pas simplement ajouter throws Exception
pour chaque méthode unique?
dans le cas d'une méthode d'interface surchargée ce type de motif pourrait alors être utilisé:
@Override
public void close() throws IOException {
try {
_close();
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
private void _close() throws Exception {
// ... closing ops
}