如何确定"x []"可能抛出的异常?

Edw*_*vey 5 c# exception square-bracket

方括号的C#引用说:方括号[]用于数组,索引器和属性.它们也可以与指针一起使用.(它也表示,对于数组)如果数组索引超出范围,则抛出异常.

因此,当您在数组之外的其他内容上使用方括号时,您如何知道可能抛出的异常?

对于Dictionary(例如),如果使用诸如Dictionary.TryGetValue之类的访问器方法,则可以轻松查找方法可能抛出的异常,但方括号[]C#引用仅表示它可能会抛出索引的异常.数组上的范围.

因此,如果要对某些数据类型使用方括号,在哪里可以查找可能为该数据类型抛出哪些异常?

我尝试访问一个不存在的Dictionary成员,只是为了看看会发生什么,我得到了KeyNotFoundException.我知道你也可以得到NullReferenceException.这记录在哪里?什么是完整的清单?

D S*_*ley 4

每个实现都记录了它。没有详尽的列表,因为运算符可以重载,因此理论上任何异常都可以抛出。运算符通常被记录为Item属性。

以下是一些有关特定用途的文档:

词典.项目

数组.项目

但是,您不需要列出可能抛出的内容的详尽列表。捕获异常通常是出于以下两个原因之一:要么您想对此采取一些措施(就像前几天TryParse捕获异常是捕获错误日期格式的最简单方法),要么您只是想注意到发生了异常并记录它,在这种情况下,您通常会重新处理实际的异常。

捕获特定异常对于前一种情况很有好处。例如,如果您捕获 aNullReferenceException通常会重新抛出一个不同的异常,指示哪个引用为 null(因为这不是 stock 的一部分)NullReferenceException)

在后一种情况下,如果您只想记录并重新抛出,那么捕获泛型就Exception可以了,因为您可能对此无能为力。