假设我想在调用一个没有required属性的类型的泛型方法时抛出一个新的异常。是否存在适合这种情况的.NET异常,或者更可能是适合自定义异常的祖先?
例如:
public static class ClassA
{
public static T DoSomething<T>(string p)
{
Type returnType = typeof(T);
object[] typeAttributes = returnType.GetCustomAttributes(typeof(SerializableAttribute), true);
if ((typeAttributes == null) || (typeAttributes.Length == 0))
{
// Is there an exception type in the framework that I should use/inherit from here?
throw new Exception("This class doesn't support blah blah blah");
// Maybe ArgumentException? That doesn't seem to fit right.
}
}
}
感谢。
答案 0 :(得分:10)
我看到它的方式,你可以采取三种方式之一......
1) NotSupportedException
2) NotImplementedException
3) You can make your own Exception type
答案 1 :(得分:3)
我知道我已经看到一些内置代码模板将NotImplemented异常作为占位符抛出,因此这可能是一个很好的起点。
答案 2 :(得分:0)
NotSupportedException是个不错的选择。此外,TargetException和TargetInvocationException也适用于反思。
答案 3 :(得分:0)
NotSupportedException,因为NotImplemented在技术上适用于存根,这不是这里发生的事情。该类型不受支持。
话虽如此,我不知道为什么MS未能提供带有内部定义的规范列表。它令人难以置信。