当记录块内抛出异常时,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 块)。