我在Java中有一个基本问题:
我有两种方法:functionA
& functionB
。functionA
调用functionB
,并functionB
引发异常。调用functionB
在 try 范围内functionA
。
现在我也希望functionA
它能够捕获范围。
有什么办法吗?
我在Java中有一个基本问题:
我有两种方法:functionA
& functionB
。functionA
调用functionB
,并functionB
引发异常。调用functionB
在 try 范围内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
}
}