在捕获的异常中 - > e.Data.Clear(); //这该怎么办?

时间:2011-08-30 16:37:41

标签: c# exception

我见过很多次这样的事情:

try
{
    //something
}
catch (FileNotFoundException e)
{
    e.Data.Clear(); // <- WTF?
}

据我所知这是无用的伏都教,但如果我错了请纠正我。

1 个答案:

答案 0 :(得分:4)

.Net中的例外情况允许您通过将任意数据放入Data Exception成员中来将其与之关联起来。它本质上是一个弱类型字典,它进行最少的检查以确保存储的信息是可序列化的。

此特定功能只是清除所有自定义关联数据。为什么有点神秘,因为开发人员没有留下任何评论。

至于这是否无用。在所有可能的引擎盖是的。这可能有用的一个特定情况是,FileNotFoundException的创建者都添加了对Data包的对象引用,并且本身保留了FileNotFoundException实例的引用。在该特定情况下,调用Clear可以通过删除对应该是短暂的对象的引用来防止内存泄漏。我发现这种情况不太可能发生。我的直觉是提交错误/删除它。