我有一个处理给定函数的重试逻辑的函数。在该函数内部,我想打印一个具有给定函数名称和类名的调试日志(当然调用者可以传递该信息)但我想知道如何在没有调用的情况下获取这些值。
我的重试方法如下,现在我将methodName作为参数,我可以从fn中取出吗?
def retry[T](attempts: Int, max: Int, operation: String)(fn: => T): T = {
try {
fn
} catch {
case e : Throwable => {
if (attempts < max) {
val retryAttempt = attempts + 1
Thread.sleep((scala.math.pow(2, retryAttempt) * 2000).toLong)
logger.debug(s"Retrying operation: $operation retryCount $retryAttempt")
retry(retryAttempt, max, operation)(fn)
} else {
throw e
}
}
}
}