假设我在C#中有以下方法:
XslCompiledTransform myObject;
public void foo() {
try {
myObject.Transform(input, output);
} catch (???) {
}
}
Visual Studio 2012中是否有菜单选项或功能可自动为catch
中可能出现的异常生成所有XslCompiledTransform
块?比如“Generate catch blocks”?
答案 0 :(得分:3)
我个人认为一般是一种好习惯。 IMO你应该只捕获你认为可能被抛出的异常。
这意味着在您的示例中:
ArgumentNullException
,但在调用方法之前检查input
/ output
是否为空IOException
而不是DirectoryNotFoundException
/ FileNotFoundException
,除非您对两种情况都有不同的异常处理记住捕获特定的异常只是有趣的是你有一个特定的异常处理关联。如果它只是“记录然后重新抛出”,那么就不要捕获特定的异常。
编辑:我认为你正在寻找一种能够完成这项工作的工具。我不知道这样的工具(你可能想查看visualstudiogallery)。但有趣的是,Exception Hunter是RedGate的一个工具,由于有趣的原因,它已经停止工作。看看:
随着.NET 4.0和WPF的发布,异常的数量 CLR可以投掷大大增加,到了存在的程度 压倒。排除列表不再涵盖所有不太可能的情况 CLR可能抛出的异常。这意味着,虽然例外 亨特将提供准确的结果,这些结果将包括一个 很长的潜在例外清单,其中大部分都不用担心 关于。实质上,该工具已经变得不那么有用了 你的工作比应该的更难。这与我们的巧妙相悖 简单的风气,所以我们决定停止销售新的许可证 产品
答案 1 :(得分:2)
不,这不是不错的做法,它符合您的需求。很难说它是否对你有好处,因为它取决于你的应用程序结构和预期的行为。
通常会尝试在最高逻辑级别捕获它们,您可以在应用程序上保持足够的灵活性,使决策者throw
或以某种方式处理它。
答案 2 :(得分:1)