2012-01-26 5 views
3

https://stackoverflow.com/a/180191Javaでメソッドのタイミングを立てるときにfinallyブロックが使用されるのはなぜですか?

ここでは、最終ブロックでは、通常ブロックでSystem.nanoTime()を呼び出してメソッドを実行します。

これは、メソッドが例外をスローした場合でも正確な時刻を報告するためだけに行われましたか?メソッドが呼び出されるだけでなく、メソッドの直後(つまり、タスクの切り替えなどを防止する)にも、より多くのことが保証されますか?

ここでfinal修飾語を使用する動機は何ですか?

答えて

6

これを行う唯一の理由は、例外がある場合でも、2番目のnanoTime()が呼び出されることを確認することです。

タスクの切り替えに関する保証はありません。

final修飾語については、個人的なスタイルの問題であり、タイミングには影響しないと思います。その答えを書いた人のように、私はしばしば実質的に一定の変数をfinalとマークします。

+0

なぜ、最終修飾語が使用されるのですか?この例では一度だけタイムアウトすると仮定していますか? – propaganda

+0

@propaganda:私が思うような個人的なスタイルの問題。彼らがタイミングに影響を与えているとは思わないでください。私は答えを更新しました。 – NPE

+1

'final'修飾子は、防御的プログラミング慣習です(C++の' const'のような)。リファレンスをfinalとしてマークした場合は、意味がないときにバグを変更してバグを挿入することはできません。プリミティブや不変オブジェクトの場合に特に便利です。 –

関連する問題