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.

26
demandé sur Suzan Cioc 2012-11-07 22:05:40

4 réponses

Oui, vous pouvez changer le code par défaut ajouté par Eclipse.

  1. dans Préférences, naviguez vers Java>Style De Code De Code>Modèles.
  2. Code, sélectionnez bloc Catch corps.
  3. 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
35
répondu Andy Thomas 2012-11-07 18:15:53

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.

1
répondu Marko Topolnik 2012-11-07 18:36:20

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 MyUnhandledExceptionchecked exception.

et notez aussi que, si vous êtes suivant cette approche, vous auriez encore besoin de declare itthrown 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é.

0
répondu Rohit Jain 2012-11-07 18:14:16

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
}
0
répondu mike rodent 2016-11-20 19:45:50