【发布时间】:2011-11-05 23:54:40
【问题描述】:
System.Collections.Generic.Dictionary 正在抛出 KeyNotFoundException,但我看不出应该丢失了哪个键。如何确定?
【问题讨论】:
-
字典的键可以是任何类型。在异常消息中使用 ToString() 会使用户的眼睛流血,增加太多噪音。也没有要求总是覆盖 ToString() 以显示有用的内容。
-
@HansPassant:它仍然可能是异常类的属性。
-
根据您要执行的操作,检查字典上的
TryGetValue方法可能是个好主意。您可以使用它来创建安全的字典查找并节省因捕获异常而产生的开销。 -
@DanielHilgarth:在某些情况下,字典键可能包含机密数据,并且代码应该假设异常对象可能以对任何人都可见的方式记录。虽然类提供构造函数参数可能很方便,该参数表示传递给它的数据应该被视为非机密数据并且可以安全地暴露在异常中,但类通常不应该在没有这样做的理由的情况下做出这样的假设.
-
if (!dictionary.TryGetValue(key, out value)) throw new KeyNotFoundException(key);
标签: c# .net exception .net-4.0 keynotfoundexception