51 votes

Existe-t-il un équivalent Java de l'exception InvalidOperationException du C# ?

Je suis en train de convertir du code C# en Java et j'ai besoin d'inclure une exception similaire à l'exception InvalidOperationException de C#. Une telle exception existe-t-elle ? Existe-t-il également une liste des types d'exception équivalents dans les deux langues ? Merci.


Je pense que dans mon cas particulier, l'exception IllegalStateException est la plus appropriée. Merci pour toutes les réponses.

65voto

Carl Points 4049

Probablement IllegalStateException .

D'après ce que j'ai lu sur InvalidOperationException : "L'exception qui est levée lorsqu'un appel de méthode n'est pas valide pour l'état actuel de l'objet."

Pour IllegalStateException : "Signale qu'une méthode a été invoquée à un moment illégal ou inapproprié. En d'autres termes, l'environnement Java ou l'application Java n'est pas dans un état approprié pour l'opération demandée."

Selon la façon dont vous utilisez InvalidOperationException je pouvais aussi voir IllegalArgumentException et UnsupportedOperationException étant ce que vous voulez. La première implique que, en général, la méthode peut être appelée sans problème, mais qu'elle est simplement passée à la poubelle cette fois-ci. jamais approprié à appeler pour cette instance (contrairement à IllegalStateException ce qui implique qu'il pourrait être approprié d'appeler la méthode du sujet parfois, mais pas pour le moment).


Je n'ai pas connaissance d'une traduction générale c# <=> Java des exceptions.

3voto

Andreas_D Points 64111

Petar m'a indiqué cet exemple de code (de msdn)

void WriteLog()
{
    if (!this.logFile.CanWrite)
    {
        throw new System.InvalidOperationException("Logfile cannot be read-only");
    }
    // Else write data to the log and return.
}

Donc, dans ce contexte, vous pourriez utiliser une IllegalStateException, bien que cela soit dit :

Lancé lorsqu'une action est tentée à un moment où la machine virtuelle n'est pas dans l'état correct.

Et un état illégal de la VM n'est certainement pas le problème dans l'exemple de référence ci-dessus. Ici, le problème est que l'objet est invalide, car il fait référence à un fichier journal en lecture seule.

Mon propre conseil : définissez simplement une exception personnalisée comme

package com.pany.project;
public class InvalidOperationException extends RuntimeException {

   // add constructors with call to super as needed

}

Pour moi, c'est beaucoup plus facile que d'essayer de trouver l'exception qui convient le mieux dans la gamme de produits de l'entreprise. java.lang paquet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X