質問

があるので、検知からの最後の項は、例外はスローされ?

例を参照してください。


try {
    // code that may or may not throw an exception
} finally {
    SomeCleanupFunctionThatThrows();
    // if currently executing an exception, exit the program,
    // otherwise just let the exception thrown by the function
    // above propagate
}

やは無視し、例外もできるのか?

C++なものだけを無視するの例外で通話を終了().他のほとんどの言語使用と同じルールがjava.

役に立ちましたか?

解決

セットフラグ変数をチェックでの最後の項ではこのように:

boolean exceptionThrown = true;
try {
   mightThrowAnException();
   exceptionThrown = false;
} finally {
   if (exceptionThrown) {
      // Whatever you want to do
   }
}

他のヒント

場合には、その問題設計されるようお願いします。では最後に"ブロックはすっかの方法にて終了します。私が思うように思いましたブロックで、同じように利用のtry-catchブロック

try {
   doSomethingDangerous(); // can throw exception
   onSuccess();
} catch (Exception ex) {
   onFailure();
}

場合に機能すび出すためのものではありませんは例外をキャッチし、この例外の店舗でラップの機能をtryブロックで安全です。そこでの例:

try {
    // ...
} finally {
    try {
        SomeCleanupFunctionThatThrows();
    } catch(Throwable t) { //or catch whatever you want here
        // exception handling code, or just ignore it
    }
}

だいたいのfinallyブロック法によって異なるかどうかをtryブロック完了順調に進んでいるのでしょうか?

その場合、できないようなもの:

boolean exceptionThrown = false;
try {
    // ...
} catch(Throwable t) {
    exceptionThrown = true;
    // ...
} finally {
    try {
        SomeCleanupFunctionThatThrows();
    } catch(Throwable t) { 
        if(exceptionThrown) ...
    }
}

このア巻き込みが...するための方法を考えなければなりの再構築コードにできるようになりこの不要です。

れていなかったではないと思っています。のcatchブロックのまるまでに修了見込みの方は、最後にブロックです。

try {
    // code that may or may not throw an exception
} catch {
// catch block must exist.
finally {
    SomeCleanupFunctionThatThrows();
// this portion is ran after catch block finishes
}

その他に追加することができますの同期()オブジェクトの例外コードの利用は、チェックインできます、最後にブロックを識別するのに役立つ場合は、別のスレッドが実行す。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top