当前位置:  开发笔记 > 编程语言 > 正文

java异常链接问题

如何解决《java异常链接问题》经验,为你挑选了1个好方法。

想象一下,我有方法:

public static void funcA() {...}

public static void funcB() 
{
    byteBuffer.wrap(someByteArray, 0, someByteArra.length);
}

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();
    }
}

函数链: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



1> John Ellinwo..:

IndexOutofBoundsException扩展了RuntimeException.它是一个runtimeexception,不需要检查.

看未经检查的例外 - 争议.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有