当记录块内抛出异常时,Micrometer 计时器是否记录?
Does Micrometer timer records when exception is thrown inside of the record block?
举个简单的例子:
fun main(): String? {
val response: String? = null
meterRegistry.timer("name").record {
response = getResponse() // throws exception
}
return response
}
在这种情况下,getResponse() 会抛出一个异常,并且在 main 方法中没有捕获。
它还记录到grafana吗?
正在查看 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
块)。
举个简单的例子:
fun main(): String? {
val response: String? = null
meterRegistry.timer("name").record {
response = getResponse() // throws exception
}
return response
}
在这种情况下,getResponse() 会抛出一个异常,并且在 main 方法中没有捕获。 它还记录到grafana吗?
正在查看 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
块)。