Closed. 这个问题正在寻求书籍、工具、软件库等的推荐。不满足堆栈溢出指南 /help/closed-questions 。目前不接受答案。
我想要一些工具,最好是能够插入 VS 2008/2010 的工具,它将遍历我的方法并添加有关它们可能抛出的异常的 XML 注释。我不想要<summary>
或为我生成的其他 XML 标签,因为我会自己填写这些标签,但如果即使在private
/protected
方法我可以看到哪些异常可以抛出。否则,我发现自己遍历这些方法并将鼠标悬停在其中的所有方法调用上以查看异常列表,然后更新该方法的<exception
列出包括那些。也许 VS 宏可以做到这一点?
由此:
private static string getConfigFilePath()
{
return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
}
To this:
/// <exception cref="System.ArgumentException"/>
/// <exception cref="System.ArgumentNullException"/>
/// <exception cref="System.IO.IOException"/>
/// <exception cref="System.IO.DirectoryNotFoundException"/>
/// <exception cref="System.Security.SecurityException"/>
private static string getConfigFilePath()
{
return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
}
Update: 看起来该工具必须递归地遍历这些方法,例如,方法 1 调用方法 2,方法 2 调用方法 3,方法 3 被记录为抛出异常NullReferenceException
,因此 method2 和 method1 都被该工具记录为抛出NullReferenceException
。该工具还需要消除重复项,例如方法中的两个调用被记录为抛出DirectoryNotFoundException
,该方法只会列出<exception cref="System.IO.DirectoryNotFoundException"/>
once.
长而短的答案是这是不可能的。与 Java 不同,.NET 语言都不要求函数报告可能引发的异常列表(这意味着您必须捕获或报告其调用的函数可能引发的任何异常)。因此,没有通用的方法来确定函数可能抛出的每个异常的详尽列表(我在这里使用“函数”一词来涵盖任何异常)written 就像一个函数,包括运算符、构造函数等),因为您无法保证给定函数可能调用的内容可能引发异常。
如果您愿意进行限制,那么可以想象您可以编写一些内容来扫描 MSDN 以查找给定 .NET 库调用的相应文章,并使用那里的异常列表(如果有)递归地建立一个列表可能会抛出什么。但是,这不会覆盖任何第三方库或捕获运行时引发的任何异常(OutOfMemoryException
, StackOverflowException
, NullReferenceException
[除非您想更进一步,让异常分析也确定是否存在空引用的可能性,但这在完全通用的意义上似乎也是不可能的])。
我很确定 C# 团队已经对此进行过一两次讨论(如果 Eric Lippert 还没有回答有关此问题的问题,我会感到惊讶),但我很确定它归结为对此:虽然这种系统很有用且有价值对某些人来说 ,强制使用它(并强迫您报告或捕获所有可能抛出的异常)导致了很多try { ... } catch (Exception ex) { ... }
阻止以避免内务处理,而一揽子、沉默的捕获比未报告的异常要糟糕得多(恕我直言)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)