【发布时间】:2010-11-04 19:56:28
【问题描述】:
假设您有一个具有以下签名的方法:
public void DoSomething(Guid id)
如果Guid.Emtpy 表示非法值,那么最适合抛出哪种异常类型? ArgumentException 还是 ArgumentOutOfRangeException?
我稍微倾向于 ArgumentException,因为我不认为 除了 Guid.Empty 之外的所有 Guid 的范围很大 - 它有点过于包容:只有一个被排除的成员。
但是,我绝不会确定应该是这种情况,所以我想知道是否有人可以为其中一个或另一个提供论据?
我很清楚这主要是语义讨论,但为了良好的 API 设计,我仍然想知道其中一个选项是否有明确的案例。
【问题讨论】:
-
这几乎就像你的方法需要某种良好的指导指南。
-
也许定义你自己的 ArgumentEmptyException?
-
@Justice。不建议为您永远不想捕获它的场景添加新的异常类型。 Mark 应该只抛出现有的异常类型之一。