如果之前有人问过我很抱歉 - 但我找不到类似的问题。
我有一个对象,它代表一个查询和结果的排序规范。我希望语义是你可以为查询指定null(即返回所有结果),你可以为订单指定null(即以任何顺序返回结果),但你不能为两者指定null(因为那么为什么你在使用查询引擎......)
因此,ArgumentException
,ArgumentNullException
和ArgumentOutOfRangeException
似乎不正确,因为它不是一个参数 - 而且他们的文档评论都是指单数。
任何指针?
感谢。
答案 0 :(得分:3)
如果这只是为了帮助开发人员使用您的方法,那么请使用标准的InvalidOperationException
或ArgumentException
,并提供有用的消息,并将其保留。把时间放在更重要的领域。
如果要从UI或其他进程驱动,那么您不应该遇到异常,因为验证输入会更好。如果你在方法中进行输入验证,那么也许可以考虑一个自定义的InvalidInputException
,再次使用一条消息(我不打算开始“输入错误异常?”辩论......)。
不要过于担心文档的细节。只要使用一定程度的常识,您的同事就能够了解正在发生的事情。
答案 1 :(得分:1)
我认为NotSupportedException
会描述你在
答案 2 :(得分:1)
.NET Framework中有先例,其中检查取决于多个参数的值。
例如,ArrayList.CopyTo(int index, Array array, int arrayIndex, int count)
。
在这种情况下,如果(index + count)比ArrayList的大小更新,则抛出ArgumentException
,使用ArgumentException
构造函数的重载,不使用{{ 1}}论证。
这与您的情况类似。