33 lines
687 B
Kotlin
Vendored
33 lines
687 B
Kotlin
Vendored
// IGNORE_BACKEND: JS
|
|
|
|
typealias EmptyFunctionResult<T> = () -> T
|
|
|
|
typealias LoggingFunctionType<T> = (tag: String, message: String, throwable: Throwable?) -> T
|
|
|
|
fun box(): String {
|
|
tryAndLog {
|
|
throw RuntimeException()
|
|
}
|
|
return "OK"
|
|
}
|
|
|
|
inline fun <T> tryAndLog(
|
|
title: String = "",
|
|
message: String = "",
|
|
logger: LoggingFunctionType<*> = L::error,
|
|
throwableAction: EmptyFunctionResult<T>
|
|
): T? {
|
|
return try {
|
|
throwableAction()
|
|
} catch (e: Throwable) {
|
|
logger(title, message, e)
|
|
return null
|
|
}
|
|
}
|
|
|
|
open class LLogger {
|
|
fun error(tag: String, message: String, exception: Throwable?): Unit {}
|
|
}
|
|
|
|
object L : LLogger()
|