C# Visual Studio为异常自动生成相关捕获块的功能?

C# Visual Studio为异常自动生成相关捕获块的功能?,c#,visual-studio,exception,visual-studio-2012,C#,Visual Studio,Exception,Visual Studio 2012,假设我在C#中有以下方法: Visual Studio 2012中是否有一个菜单选项或功能,可以自动为XslCompiledTransform中可能出现的异常生成所有catch块?像“生成捕捉块”?不,这还不错,但它符合您的需要。很难说它是否对你有好处,因为这取决于你的应用程序结构和预期行为 通常尝试在尽可能高的逻辑级别上捕捉它们,在应用程序中,你有足够的灵活性来做出决策。威瑟尔扔掉它或以某种方式处理它。我个人认为这通常不是一个好的做法。IMO你只应该抓住你认为可能被抛出的例外。 在您的示例中,

假设我在C#中有以下方法:


Visual Studio 2012中是否有一个菜单选项或功能,可以自动为
XslCompiledTransform
中可能出现的异常生成所有
catch
块?像“生成捕捉块”?

不,这还不错,但它符合您的需要。很难说它是否对你有好处,因为这取决于你的应用程序结构和预期行为


通常尝试在尽可能高的逻辑级别上捕捉它们,在应用程序中,你有足够的灵活性来做出决策。威瑟尔
扔掉它或以某种方式处理它。

我个人认为这通常不是一个好的做法。IMO你只应该抓住你认为可能被抛出的例外。 在您的示例中,这意味着:

  • 在您的示例中,您不应该捕获
    ArgumentNullException
    ,但在调用方法之前,请检查
    input
    /
    output
    是否为null
  • 我将捕获
    IOException
    而不是
    DirectoryNotFoundException
    /
    FileNotFoundException
    ,除非对这两种情况有不同的异常处理
记住捕获特定异常唯一有趣的是您有一个特定的关联异常处理。如果只是“记录然后重新抛出”,那么就不要捕获特定的异常


编辑:我想你正在寻找一个工具来完成这项工作。我不知道有这样的工具(您可能想查看visualstudiogallery)。但有趣的是,RedGate的一个工具正在做这项工作,但由于有趣的原因已经停止了。看看:

随着.NET4.0和WPF的发布 CLR可以抛出的次数大大增加,达到 势不可挡的排除清单不能再涵盖所有不可能发生的情况 CLR可能抛出的异常。这意味着,尽管有例外 Hunter将提供准确的结果,这些结果将包括 一长串潜在的例外情况,其中大多数都没什么好担心的 关于从本质上讲,该工具的可用性已经大大降低,并且使 你的工作比应该的更辛苦。这违背了我们的智慧 简单的精神,所以我们决定停止销售新的许可证 产品


不,没有聪明的方法自动生成所有可能异常的所有catch块。但VisualStudio显示了函数调用的相关异常列表,如下所示


您指的是“实现接口”选项之类的“功能”,还是更抽象的编程指南?如果VS 2012有“生成捕获块”之类的菜单选项,问题就更大了:-我想是这样的。我觉得你问题上的标签有点误导。这里没有提到“VisualStudio”。我同意蒂格兰的回答,但与问题无关。我想他也被问题/标签甩了。你可以编辑一下你的问题,让它更清楚一点吗?@Robert我更新了我的答案,添加了关于工具的信息。我猜这个想法来自eclipse/netbeans是如何为Java实现的?简而言之,答案是否定的,而且可能永远不会。Java中的方法包括在方法签名中抛出的异常,这意味着在IDE中不需要先读取代码就可以快速轻松地执行。而且,大多数情况下,您都希望稍后抛出和处理这些异常,或者根本不抛出和处理这些异常。
XslCompiledTransform myObject;

public void foo() {
  try {
    myObject.Transform(input, output);
  } catch (???) {
  }
}