C# 异常类型类型考虑为集合下溢场景抛出
问题陈述: 我一直在构建处理集合的API。最近我遇到了一个场景,我的API必须在对集合执行实际操作(更准确地说,这里的it操作是删除/删除操作)之前验证集合下溢场景。如果发现API遇到下溢场景,它必须向使用该API的客户端抛出异常 <> P>在传感器客户端消耗API的情况下,API可以考虑抛出的最好的异常类型是什么? 我能想到的可能解决方案有:C# 异常类型类型考虑为集合下溢场景抛出,c#,.net,exception-handling,C#,.net,Exception Handling,问题陈述: 我一直在构建处理集合的API。最近我遇到了一个场景,我的API必须在对集合执行实际操作(更准确地说,这里的it操作是删除/删除操作)之前验证集合下溢场景。如果发现API遇到下溢场景,它必须向使用该API的客户端抛出异常 P>在传感器客户端消耗API的情况下,API可以考虑抛出的最好的异常类型是什么? 我能想到的可能解决方案有: 抛出带有消息的算术异常,例如“队列为空”。MSDN文章建议考虑下溢场景的算术例外 public T Dequeue() { if (this.Siz
public T Dequeue()
{
if (this.Size == 0)
{
throw new ArithmeticException("Queue is empty");
}
return this.ExtractTop();
}
对于API消费者来说,更有意义的是(1)或(2)中给出的解决方案吗?不,这些例外是针对数字类型的,队列不是数字的。NET已经有一个队列类,只需抛出与它相同的队列类即可。无效操作异常。感谢您的回答。我同意,在这种情况下,例外情况并不意味着是数字类型。但是,问题是,作为客户端的API使用者,如果用户能够处理特定的异常类型,这对用户来说不是更有意义吗?由于下溢场景非常特殊,只有当队列中没有项目并且您试图从中退出元素时才会发生下溢,而在许多其他情况下可能会发生InvalidOperationException?这只意味着有一件事情是由dequeue()引发的,从空队列中退出项目不是有效的操作。但是,嘿,做你自己的事情并记录它的含义。不,这些例外是针对数字类型的,队列不是数字的。NET已经有一个队列类,只需抛出与它相同的队列类即可。无效操作异常。感谢您的回答。我同意,在这种情况下,例外情况并不意味着是数字类型。但是,问题是,作为客户端的API使用者,如果用户能够处理特定的异常类型,这对用户来说不是更有意义吗?由于下溢场景非常特殊,只有当队列中没有项目并且您试图从中退出元素时才会发生下溢,而在许多其他情况下可能会发生InvalidOperationException?这只意味着有一件事情是由dequeue()引发的,从空队列中退出项目不是有效的操作。但是,嘿,做你自己的事情,记录它的意思。
public T Dequeue()
{
if (this.Size == 0)
{
throw new UnderflowException("Queue is Empty");
}
return this.ExtractTop();
}