J'écris actuellement du code pour UnconstrainedMelody qui a des méthodes génériques à voir avec les enums.
Maintenant, j'ai une classe statique avec un tas de méthodes qui sont ne destinées qu'à être utilisées avec des énumérations "flags". Je ne peux pas ajouter cela comme contrainte ... il est donc possible qu'ils soient également appelés avec d'autres types d'énumérations. Dans ce cas, j'aimerais lancer une exception, mais je ne sais pas laquelle lancer.
Juste pour rendre cela concret, si j'ai quelque chose comme ça:
// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
if (!IsFlags<T>()) // This method doesn't throw
{
throw new ???
}
// Normal work here
}
Quelle est la meilleure exception à lancer? ArgumentException
Cela semble logique, mais c'est un argument de type plutôt qu'un argument normal, ce qui pourrait facilement semer la confusion. Dois-je présenter ma propre TypeArgumentException
classe? Utiliser InvalidOperationException
? NotSupportedException
? Rien d'autre?
Je plutôt pas créer ma propre exception pour ce à moins qu'il soit clairement la bonne chose à faire.