Erreurs d'extraction de méthode
Lorsque vous tentez d'extraire une méthode, une ou plusieurs des erreurs courantes suivantes peuvent se produire :
Le bloc sélectionné renvoie à un type local déclaré hors de la sélection.
Une instruction sélectionnée pour l'extraction fait référence à une déclaration de type local qui ne fait pas partie de la
sélection. Etendez la sélection afin qu'elle englobe la déclaration de type local, ou réduisez-la afin qu'elle ne
contienne aucune référence à cette déclaration de type local.
Un type local déclaré dans le bloc sélectionné est référencé hors de la sélection.
La sélection comprend une déclaration de type local mais ce type est également référencé en dehors des instructions
sélectionnées. Etendez la sélection afin qu'elle englobe toutes les références au type local, ou réduisez-la afin
qu'elle ne contienne pas la déclaration du type local.
Valeur de retour ambiguë : le bloc sélectionné contient plusieurs attributions à une variable locale.
Le bloc sélectionné contient plusieurs affectations à une variable locale. Réduisez la sélection afin qu'elle ne contienne
qu'une seule affectation, ou étendez-la afin qu'elle contienne au minimum toutes les références aux variables locales sauf
une.
Valeur de retour ambiguë : plusieurs références à la déclaration locale sélectionnée détectées.
Plusieurs variables déclarées dans la sélection sont également référencées en dehors de celle-ci. Réduisez la sélection
afin qu'elle ne contienne qu'une seule déclaration de variable, ou étendez-la afin qu'elle contienne au minimum toutes les
références aux déclarations de variables sauf une.
Valeur de retour ambiguë : attribution à une variable locale et référence à une déclaration locale sélectionnée
détectées.
Le bloc sélectionné contient une affectation à une variable locale. En outre, une variable déclarée dans la sélection est
également référencée en dehors de celle-ci. Réduisez la sélection afin qu'elle contienne soit l'affectation, soit la
déclaration locale, ou étendez-la afin qu'elle contienne soit toutes les références à une variable locale, soit toutes les
déclarations de variables.
Valeur de retour ambiguë : la sélection contient une instruction de retour et une valeur doit être renvoyée à partir
de la méthode extraite.
Le bloc sélectionné contient une instruction de retour. Or une valeur doit être renvoyée à partir de la méthode extraite
car la sélection contient également une affectation à une variable locale ou une déclaration locale. Modifiez la sélection
afin qu'elle exclue soit l'instruction de retour, soit toutes les affectations à des variables locales et toutes les
déclarations de types locaux.
Valeur de retour ambiguë : l'expression possède un type retour et une valeur doit être renvoyée à partir de la méthode
extraite.
L'instruction sélectionnée est une expression (par exemple, la partie conditionnelle d'une instruction if-then-else) qui
doit renvoyer une valeur booléenne. Or une valeur doit être renvoyée à partir de la méthode extraite car la sélection
contient également une affectation à une variable locale. Sélectionnez la totalité de l'instruction, et non seulement sa
partie conditionnelle.
La sélection contient une instruction break mais l'élément break cible correspondant n'est pas sélectionné.
Etendez la sélection afin qu'elle inclue la cible break, ou réduisez-la afin qu'elle l'exclue.
La sélection contient une instruction continue mais l'élément continue cible correspondant n'est pas sélectionné.
Etendez la sélection afin qu'elle inclue la cible continue, ou réduisez-la afin qu'elle l'exclue.
Impossible d'extraire la nouvelle méthode de la sélection. Seules les instructions d'un corps de méthode peuvent être
extraites.
Ce massage d'erreur générique s'affiche lorsqu'un problème inconnu est rencontré. Il apparaît notamment dans les cas
suivants :
-
une méthode complète est sélectionnée, et non seulement une partie de son corps ;
-
la sélection comporte une instruction incomplète. Dans le contexte de l'extraction de méthode, les instructions sont
séparées par des points-virgules. Voici quelques exemples dans lesquels la sélection ne contient pas un ensemble
d'instructions et ne peut donc pas être extraite :
-
foo().bar().baz();
Dans ce cas, il est nécessaire de sélectionner toute la chaîne d'envoi de message.
-
int i= foo();
Dans ce cas, il est nécessaire d'étendre la sélection afin qu'elle contienne toute la déclaration.
-
Outre les instructions, il est possible d'extraire également la partie conditionnelle d'une instruction if-then-else. La
sélection suivante est donc incorrecte :
if (i < 10 && j < 20)
Dans ce cas, il est nécessaire de sélectionner toute la partie conditionnelle.
En revanche, la sélection "if (i < 10 && j < 20)" est correcte.
La sélection démarre dans un commentaire.
Il est impossible d'extraire une partie d'un commentaire. Etendez la sélection afin qu'elle englobe la totalité du
commentaire, ou réduisez-la afin qu'elle n'en contienne aucune partie.
La sélection se termine dans un commentaire.
Il est impossible d'extraire une partie d'un commentaire. Etendez la sélection afin qu'elle englobe la totalité du
commentaire, ou réduisez-la afin qu'elle n'en contienne aucune partie.
Impossible d'extraire la sélection qui se termine au milieu d'une instruction.
Ajustez la sélection afin qu'elle englobe un ensemble d'instructions complètes. Dans le contexte de l'extraction de
méthode, les instructions sont séparées par des points-virgules.
Autres erreurs
Les erreurs suivantes sont évidentes et ne nécessitent pas d'explication :
-
Impossible d'extraire une instruction de retour unique.
-
Seule extraction possible : instruction de retour vide.
-
La sélection commence ou se termine au milieu d'une déclaration de type. Sélectionnez toute la déclaration ou toutes les
instructions d'un corps de méthode.
-
Impossible de déterminer le type retour de l'expression à extraire.
-
Impossible d'extraire les instructions sélectionnées de la partie des conditions de l'instruction if-then-else.
-
Impossible d'extraire les instructions sélectionnées de la partie des conditions de l'instruction do-while.
-
Impossible d'extraire les instructions sélectionnées de la partie des conditions de l'instruction while.
-
La sélection ne peut pas démarrer juste après le mot-clé do.
-
La sélection doit traiter toute l'instruction do-while ou des parties du bloc d'action.
-
La sélection doit traiter toute l'instruction if-then-else ou des parties du bloc then ou else.
-
Impossible de procéder à une extraction dans la nouvelle méthode car la sélection comporte une instruction de retour à la
ligne...
-
La sélection doit traiter toute l'instruction switch ou des parties de blocs case uniques.
-
La sélection doit traiter l'instruction synchronisée entière ou des parties du bloc synchronisé.
-
La sélection doit traiter toute l'instruction try ou des parties du bloc try, catch ou finally.