Java-try&;调用方法中的捕获
我有一个关于Java的基本问题: 我有两种方法:Java-try&;调用方法中的捕获,java,Java,我有一个关于Java的基本问题: 我有两种方法:function和functionBfunctionA调用functionB,并且functionB引发异常。对functionB的调用在function的try范围内 现在我还希望function将进入它的捕获范围 有什么方法可以做到这一点吗?如果在methodB中抛出异常并捕获它,将其传播到methodA的一种方法是重新播放它: void methodB() throws SomeException { try { //
function
和functionB
functionA
调用functionB
,并且functionB
引发异常。对functionB
的调用在function
的try范围内
现在我还希望function
将进入它的捕获范围
有什么方法可以做到这一点吗?如果在
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
}
}
你的问题不清楚。什么是“我也希望Function将进入它的捕获范围”?Function调用functionB。现在,函数B出现了一个例外。所以函数B进入它的捕获范围。我还希望functionA在从functionB调用返回时进入它的catch范围。对不起,这没有帮助-这既不是很好的英语,也没有任何技术意义。请在代码中显示一个示例,说明您尝试了什么,以及您希望发生什么。在B的catch块中重新显示该示例,并为函数B声明
throws
子句,然后它将转到A的catch块。但不清楚你到底想要实现什么