|
|
1
11
由于继承用于指定要捕获哪些异常,因此在做出决定时,您应该首先尊重这一点。 想想携带额外信息的IOException,或者ArgumentOutOfRangeException或ArgumentNullException以外的ArgumentException。 |
|
|
2
7
假设你真的需要一个自定义异常,我会像你正在寻找的那样从exception继承,而不仅仅是从exception继承。
例如,如何
|
|
|
3
4
我认为创建一个新的Exception类型总是更安全的。如果你需要改变它的处理方式,那么更容易找到你正在或可能正在处理它的情况。找到MyException比找到ArgumentOutOfRangeException的具体情况要容易得多。您似乎可以在异常中提供一些额外的信息,创建异常并不需要太多的工作。 此外,我倾向于继承像MyBaseException这样的基础应用程序类,并确保为异常添加XML注释。 |
|
|
4
2
我只是好奇,你为什么不使用已经存在的例外呢?听起来这些例外正是你需要的,你为什么反对使用它们? |
|
|
5
2
就我个人而言,如果我有一个索引器,并且索引值超出范围,那么我只会抛出现有的IndexOutOfRangeException,我不会费心继承它。 如果你只谈论类似但不完全相同的异常,那么看看框架中提供的模式。这似乎没有意义,继承描述了一种“is-a”关系。 |
|
|
6
1
如果你不需要向异常添加任何额外的数据,那么我就使用原生数据。NET异常,如IndexOutOfRangeException。 然而,如果你需要将一些你无法用IndexOutOfRangeException原生完成的异常与你的异常相关联,那么我会继承它。这里的好处是,你可以捕获新的自定义异常类型或IndexOutOfRangeException。当然,如果你捕获了基类型,你就不会有额外的属性等等。 |
|
|
7
1
依我之见,从另一个异常继承没有问题。这使这一例外的目的更加明确。但请确保适用于ParentException的所有内容也适用于您创建的ChildException。否则,你可能会得到 "Square extends Rectangle" problem ... |
|
|
8
0
我几乎总是使用IllegalArgumentException(Null和/或超出范围的值)和IllegalStateException来处理比IOException、SQLException、Null更具体的任何事情。.. |
|
|
9
0
我认为这一切都取决于你是否想将ArgumentNotInPersitableState异常作为ArgumentOutOfRange进行捕获。如果会有这样的catch块(或者如果你正在编写一个框架,它可能会被其他人使用),那么是的,你应该继承相关的异常类型。 |
|
|
10
0
如果只使用通用异常,则永远无法捕获应用程序自定义的特定异常。如果你只是使用
您将捕获每个异常,而无法过滤特定错误。
这也允许我向用户记录方法调用将抛出他们需要处理的特定于应用程序的异常。 如果继承Exception类,请确保在基类中实现具有消息、消息+内部异常和序列化异常的构造函数。 这是我举的一个例子。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |