jbu*_*jbu 2 java exception chaining
想象一下,我有方法:
public static void funcA() {...}
public static void funcB()
{
byteBuffer.wrap(someByteArray, 0, someByteArra.length);
}
Run Code Online (Sandbox Code Playgroud)
IN 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();
}
}
Run Code Online (Sandbox Code Playgroud)
函数链:funcB() - > ByteBuffer.wrap()
我的问题是为什么funcB不需要围绕抛出异常的java api方法执行try-catch块.没有try-catch块,funcB编译得很好.我相信答案与java api方法抛出异常这一事实有关但是因为"抛出IndexOutOfBoundsException"而不是DECLARED
函数链:funcA() - > funcB() - > ByteBuffer.wrap(...)
我的下一个问题是,当我不要改变funcB为"funcB()抛出IndexOutOfBoundsException异常"怎么FuncA的并不需要赶上funcB的抛出的异常?编译器是否深入挖掘并意识到ByteBuffer.wrap(...)未被声明为"wrap()抛出IndexOutOfBoundsException"因此所有调用者实际上不需要捕获任何内容甚至是子调用者(在本例中为funcB)被声明为"funcB抛出IndexOutOfBoundsException"?
对不起,如果那令人困惑或难以理解.
请帮忙.
JBU
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |