为什么TryPopRange可能会给出例外?ConcurrentStack.



我在TryPopRange ConcurrentStack方法中找到了一个双重标准。方法的名称TryPopRange说,它使用TryXXX模式,这不应该给你例外。但是TryPopRange方法可以抛出3个不同的异常(ArgumentEx,ArgumentNullEx,ArgumentOutOfRangeEx(。好的,检查传入的参数是正常的。但是,如果并发堆栈为空,我将有异常。如果一个线程将读取所有数据,并且我的线程将使用 TryPopRange 方法,则我的读取尝试将只有例外。

我能理解,他们为什么要这样做??

你指的是TryPopRange的这种过载吗?

public int TryPopRange(T[] items, int startIndex, int count);
// Exceptions:
//   T:System.ArgumentNullException:
//     items is a null reference (Nothing in Visual Basic).
//
//   T:System.ArgumentOutOfRangeException:
//     startIndex or count is negative. Or startIndex is greater than or equal to the
//     length of items.
//
//   T:System.ArgumentException:
//     startIndex + count is greater than the length of items.

这些异常与 ConcurrentStack 集合中的项数无关,而是与提供的 T[] items 参数的大小有关。应将一致的值作为参数传递,因此不能传递大小为 10 的 items 数组和大小为 11 的startIndex数组。

相关内容

  • 没有找到相关文章

最新更新