Javaに関する基本的な質問があります。
私には2つの方法があります:functionA
&functionB
。functionA
を呼び出しfunctionB
、functionB
例外を発生させます。の呼び出しfunctionB
は、のtryスコープにありfunctionA
ます。
今、私はfunctionA
それがキャッチスコープに行くことも望んでいます。
それを行う方法はありますか?
Javaに関する基本的な質問があります。
私には2つの方法があります:functionA
&functionB
。functionA
を呼び出しfunctionB
、functionB
例外を発生させます。の呼び出しfunctionB
は、のtryスコープにありfunctionA
ます。
今、私はfunctionA
それがキャッチスコープに行くことも望んでいます。
それを行う方法はありますか?
例外がスローされmethodB
、それをキャッチした場合、それを伝播する 1 つの方法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
}
}