假设我想用一个记录异常并继续的 try-catch 块来包装可以抛出异常的代码。就像是:
loggingExceptions {
// something dangerous
}
理想情况下,我想用于记录调用对象上定义的 Logger(如果有的话)(如果没有,则会出现编译时错误)。我很想定义这样的东西:
def loggingExceptions[L <: { def logger: Logger }](work: => Unit)(implicit objectWithLogger: L): Unit = {
try {
work
} catch {
case t: Exception => objectWithLogger.logger.error(t.getMessage)
}
}
objectWithLogger 会以某种方式“神奇地”扩展为客户端代码中的“this”。这(或类似的事情)可能吗?