【发布时间】:2009-12-17 22:45:46
【问题描述】:
我非常喜欢使用异常子类型来帮助描述导致异常的问题。例如,假设我正在编写一个不允许大于 100 的 int 值作为参数传入的方法。我通常会以一个条件来启动该方法以防止这种情况发生,并在发生时抛出异常。我可能会抛出一个 System.Argument 异常(带有适当的消息、内部异常和数据)来表明这一点。
现在我有一个有两个属性的类。对于被视为“有效”的对象,这些属性中的一个必须具有非空值,而另一个必须为空。我碰巧有一个不正确的缺陷案例,我想在检测到这一点时抛出异常。
我的问题是:在这种情况下最好使用的 Exception 子类是什么?我没有看到 (Invalid)StateException 子类。 ApplicationException 是明显的后备选择,但它非常通用,所以我希望有更好的东西。
目前我特别感兴趣的是 .NET 异常子类,但由于同样的问题适用于多种语言,我不会认为讨论其他语言解决方案太离题。例如:Java 有IllegalStateException,这似乎完美地描述了我的需求。我还收藏了similar question for Ruby。
【问题讨论】: