Представьте меня есть методы:Java исключение сцепления вопрос
public static void funcA() {...}
public static void funcB()
{
byteBuffer.wrap(someByteArray, 0, someByteArra.length);
}
В Java API:
public static ByteBuffer wrap(byte[]array, int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
функции цепи: funcB() -> ByteBuffer.wrap()
Мой вопрос так как funcB не нужно делать блок try-catch вокруг этого java-метода api, который генерирует исключение. funcB компилируется без блока try-catch. Я считаю, что ответ связан с тем, что метод java api генерирует исключение, но НЕ ОБНАРУЖЕН как «throws IndexOutOfBoundsException»
функциональная цепочка: funcA() -> funcB() -> ByteBuffer.wrap (.. .)
Мой следующий вопрос, когда я DO изменения funcB к «funcB() бросает IndexOutOfBoundsException» как же funcA не нужно, чтобы поймать брошенный исключение funcB в? Разрабатывает ли компилятор глубину и понимает, что ByteBuffer.wrap (...) не объявляется как «wrap() генерирует IndexOutOfBoundsException», поэтому всем вызывающим абонентам на самом деле не нужно ничего поймать даже подзаголовков (funcB в этом случае) на самом деле объявляются как «funcB throws IndexOutOfBoundsException»?
Извините, если это было непонятно или трудно понять.
Пожалуйста, помогите.
JBU
так в чем смысл наличия бросков, если есть исключения, которые не нужно поймать? – jbu
Иногда вам нужно, чтобы ОПЦИЯ ловила исключение, не требуя явного перебора. –
А, это будет хороший вариант. Я вижу, что это ведет к лени. – jbu