繁体   English   中英

Java - 尝试并捕获调用方法

[英]Java - try & catch in calling methods

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

我有两个方法: functionAfunctionB functionA调用functionB ,而functionB引发异常。 要将呼叫functionB处于试范围functionA

现在我也希望functionA能够实现它的捕获范围。

有什么方法可以做到吗?

如果有异常抛出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
    }
}

实际上,这通常是它的工作方式,前提是functionB本身不会捕获异常。 抛出异常时,会调用堆栈,直到找到匹配的catch块。

不确定这是不是你想要的

 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
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM