我目前正在为UnconstrainedMelody写一些代码,该代码具有与枚举有关的通用方法。
现在,我有一个带有一堆方法的静态类,这些方法只能与“标志”枚举一起使用。我不能将此添加为约束...因此它们也可能会与其他枚举类型一起调用。在那种情况下,我想抛出一个异常,但是我不确定该抛出哪个异常。
只是要具体一点,如果我有这样的东西:
// 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
}
最好的例外是什么?ArgumentException
听起来很合逻辑,但这是类型参数而不是普通参数,这很容易使事情混淆。我应该介绍自己的TypeArgumentException
课程吗?使用InvalidOperationException
?NotSupportedException
?还要别的吗?
我宁愿没有为此创造我自己的异常,除非它显然是做正确的事。