6

您是否知道是否有任何选项或扩展来生成捕获 Visual Studio 中方法引发的所有异常所需的代码?

例如我打电话File.WriteAllBytes(...)

该方法可以抛出 9 个异常:System.ArgumentException、System.ArgumentNullException 等。

我想要所有 9 个异常的代码:

catch (ArgumentException) {

}
catch (ArgumentNullException) {

}
...

我在 Eclipse for Java 中看到过这种行为,但我想知道 Visual Studio 中是否有类似的东西。

顺便说一句,我正在使用 Visual Studio 2012 Premium

4

2 回答 2

14

在 Visual Studio 中没有这样的东西。

主要问题是,与 Java 不同,C# 不支持类似throws子句的任何内容。因此,无法直接知道方法会引发哪些可能的异常。该工具是围绕语言特性构建的,而 C# 中不存在这种特性。

Anders Hejlsberg在这次采访中详细讨论了这个决定

话虽如此,在 C# 中,您通常不希望显式捕获所有这些异常。您应该只捕获可以正确处理的异常。如果您想捕获所有异常以进行日志记录,只需catch (Exception e)在任何特定异常类型之后使用一个,它将捕获所有其他异常。

于 2013-10-10T17:36:21.960 回答
3

C# 不是 Java。您不仅不需要捕获方法抛出的所有异常,这也是一个非常糟糕的主意。

您应该只捕获需要处理的异常。如果对于特定的异常没有什么特别需要做的,那么让它冒泡给你的调用者,它可能有一些需要做的事情。或者它可能不会。

于 2013-10-10T17:34:32.837 回答