这样做的目的是保持一个有意义的层次结构,并且还用于对相关的异常进行分组。
此外,如果您知道 anIndexOutOfBoundsException
是什么,并且有人给了您另一个扩展这个例外的例外,您可以立即从这个事实中收集信息。在这种情况下,一些涉及的对象将索引保持在一定范围内。
如果每个异常都扩展Exception
或RuntimeException
(是否应该检查或不检查它的出现),并且它的名称有些晦涩,那么您将不知道它可能代表什么。
考虑以下代码。
try {
for (int i = 0; i < limit; ++i) {
myCharArray[i] = myString.charAt(i);
}
}
catch (StringIndexOutOfBoundsException ex) {
// Do you need to treat string indexes differently?
}
catch (ArrayIndexOutOfBoundsException ex) {
// Perhaps you need to do something else when the problem is the array.
}
catch (IndexOutOfBoundsException ex) {
// Or maybe they can both be treated equally.
// Note: you'd have to remove the previous two `catch`.
}