Java - 尝试&抓住调用方法

时间:2012-08-05 08:47:24

标签: java

我在Java中有一个基本问题:

我有两种方法:functionA& functionBfunctionA调用functionBfunctionB提出异常。对functionB的调用位于functionA的尝试范围内。

现在我也希望functionA能够达到它的范围。

有什么方法可以做到吗?

3 个答案:

答案 0 :(得分:2)

如果在methodB中抛出异常而你抓住它,将其传播到methodA的一种方法是重新抛出它:

void methodB() throws SomeException {
    try {
        //Something that can throw SomeException
    } catch (SomeException e) {
        //rethrow e
        throw e;
    }
}

void methodA() {
    try {
        methodB();
    } catch (SomeException e) {
        //this block will run if methodB throws SomeException
    }
}

但如果你需要,你可能根本不应该在methodB中捕获异常,只是让它自动传播到methodA

void methodB() throws SomeException {
    //Something that can throw SomeException: don't catch it
}

void methodA() {
    try {
        methodB();
    } catch (SomeException e) {
        //this block will run if methodB throws SomeException
    }
}

答案 1 :(得分:0)

实际上,如果functionB本身没有捕获异常,那通常就是这样的。抛出异常时,会向调用堆栈冒泡,直到找到匹配的catch块。

答案 2 :(得分:0)

不确定这是否是你想要的

 void functionB() throws MyException {
 try{
 .....
}Catch(MyException e){
//do something here;
 throw e;
}
}

void functionA() {
try {
    functionB();
} catch (MYException e) {
    //do something else to A here
}
}