您是否知道是否有任何选项或扩展来生成捕获Visual Studio中方法引发的所有异常所需的代码?
例如,我正在呼叫File.WriteAllBytes(...)
该方法可以抛出9个Exceptions:System.ArgumentException,System.ArgumentNullException等等。
我想要所有9个例外的代码:
catch (ArgumentException) {
}
catch (ArgumentNullException) {
}
...
我在Eclipse for Java中看到过这种行为,但我想知道Visual Studio中是否有类似内容。
BTW我正在使用Visual Studio 2012 Premium
答案 0 :(得分:14)
在Visual Studio中没有这样的东西。
主要问题是,与Java不同,C#不支持throws
子句之类的任何内容。因此,没有办法直接知道方法会引发什么可能的异常。工具是围绕语言功能构建的,C#中不存在。
Anders Hejlsberg discusses this decision in detail in this interview。
话虽如此,在C#中,您通常不希望明确捕获所有这些异常。您应该只捕获可以正确处理的异常。如果要捕获所有用于记录puroses的异常,只需在任何特定异常类型之后使用单个catch (Exception e)
,它将捕获所有其他异常。
答案 1 :(得分:3)
C#不是Java。你不仅需要来捕获方法抛出的所有异常,这也是一个非常糟糕的主意。
您应该只捕获需要处理的异常。如果您没有特别需要为特定异常做什么,那么让它冒泡到您的调用者,这可能有它需要做的事情。或者它可能没有。