我在Java中有一个基本问题:
我有两种方法:functionA
& functionB
。 functionA
调用functionB
,functionB
提出异常。对functionB
的调用位于functionA
的尝试范围内。
现在我也希望functionA
能够达到它的范围。
有什么方法可以做到吗?
答案 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
}
}