0

Javaに関する基本的な質問があります。

私には2つの方法があります:functionAfunctionBfunctionAを呼び出しfunctionBfunctionB例外を発生させます。の呼び出しfunctionBは、のtryスコープにありfunctionAます。

今、私はfunctionAそれがキャッチスコープに行くことも望んでいます。

それを行う方法はありますか?

4

3 に答える 3

2

例外がスローされ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
    }
}
于 2012-08-05T08:51:35.377 に答える
0

functionB実際には、例外自体をキャッチしない限り、これが通常の動作方法です。catch例外がスローされると、一致するブロックが見つかるまでコールスタックがバブルアップします。

于 2012-08-05T08:56:24.770 に答える
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
}
}
于 2012-08-05T09:00:31.963 に答える