在记录块内引发异常时,千分尺计时器是不是记录?
Posted
技术标签:
【中文标题】在记录块内引发异常时,千分尺计时器是不是记录?【英文标题】:Does Micrometer timer records when exception is thrown inside of the record block?在记录块内引发异常时,千分尺计时器是否记录? 【发布时间】:2021-12-13 09:21:26 【问题描述】:只是一个简单的例子:
fun main(): String?
val response: String? = null
meterRegistry.timer("name").record
response = getResponse() // throws exception
return response
在这种情况下 getResponse() 会抛出异常,并且 main 方法中没有捕获。 它仍然记录到grafana吗?
【问题讨论】:
【参考方案1】:看着source code…
@Override
public void record(Runnable f)
final long s = clock.monotonicTime();
try
f.run();
finally
final long e = clock.monotonicTime();
record(e - s, TimeUnit.NANOSECONDS);
...您可以看到,在异常情况下也会记录时间(因为finally
块)。
【讨论】:
以上是关于在记录块内引发异常时,千分尺计时器是不是记录?的主要内容,如果未能解决你的问题,请参考以下文章