4

我对 C# 感到非常沮丧的一件事是当我发现一些问题并且我想抛出一个有意义的异常时。我发现很难在智能感知中找到这些例外。没有异常命名空间,因此我无法通过智能感知列出所有异常,而无需四处寻找异常。

不想创建自己的异常,我只是想看看除了谷歌搜索异常以找到它的命名空间之外是否还有其他选项,以便我可以使用它。

4

3 回答 3

6

在大多数情况下,这是不好的做法。您应该重用少数几个异常(InvalidOperation、NullReference、ArgumentException 等)。但是,例如,您不应该SqlException自暴自弃——因为您不知道框架会用它做什么。

创建您自己的异常层次结构会在出现错误时为您的应用程序增加意义。重用已经理解的异常会导致混乱——失去意义。

于 2012-07-18T12:02:16.880 回答
2

您可以在对象浏览器中浏览整个异常类树。查找 System.Exception,然后单击派生类型。不是 100% 确定它们是否都在那里,但它们中的大多数肯定在那里。System.Exception -> 派生类型(也在 System.Excecption 树的根目录中)

于 2012-07-18T11:58:53.997 回答
1

您可以在 MSDN 中找到一些例外情况,请点击此处。通常,这些是您倾向于抛出的异常,并且在许多情况下,您将从这些异常中派生出您自己的异常。然而,一个方法抛出太多不同的异常通常是不被接受的。
另外,回想一下<exception>xml 文档标记。使用这个标签对启发用户你的方法抛出哪些异常以及何时抛出有很大帮助。就清晰度而言,它可能比抛出特定类的异常更重要。

于 2012-07-18T12:15:13.927 回答