为什么在Java中对方法计时时使用finally块?

为什么在Java中对方法计时时使用finally块?,java,timing,Java,Timing,这里,通过在普通块中调用System.nanoTime()对方法进行计时,而在finally块中调用结束时间 这样做是否只是为了报告一个正确的时间,即使该方法抛出一个异常?或者更能保证:它不仅会被调用,而且还会在方法之后被调用(即防止任务切换或类似…) 在这里使用final修饰符的动机是什么?这样做的唯一原因是确保即使在存在异常的情况下也调用第二个nanoTime() 没有与任务切换相关的保证 至于最后的修饰语,我认为它们只是个人风格的问题,对时间没有影响。像写这个答案的人一样,我经常将有效恒定

这里,通过在普通块中调用
System.nanoTime()
对方法进行计时,而在finally块中调用结束时间

这样做是否只是为了报告一个正确的时间,即使该方法抛出一个异常?或者更能保证:它不仅会被调用,而且还会在方法之后被调用(即防止任务切换或类似…)


在这里使用
final
修饰符的动机是什么?

这样做的唯一原因是确保即使在存在异常的情况下也调用第二个
nanoTime()

没有与任务切换相关的保证


至于
最后的
修饰语,我认为它们只是个人风格的问题,对时间没有影响。像写这个答案的人一样,我经常将有效恒定的变量标记为
final

,为什么要使用final修饰符?这个例子假设它只会计时一次?@宣传:我想这只是个人风格的问题。不要认为他们对时间安排有任何影响。我已经更新了答案。
final
修饰符是一种防御性编程实践(如C++中的
const
)。如果您已将引用标记为final,则不能在无意中更改它来引入错误。它对原语和不可变对象特别有用。另外,请注意,输入和退出
try
块将产生可测量的开销。