如何创建tryCatch扩展函数



我喜欢实现这样的代码:

someKindOfCode.tryCatch()

我创建了它但是Any不起作用不要把代码放在tryCatch

里面
private fun Any.tryCatch() {
try {
this
} catch (e: Exception) {
Log.e(TAG, "tryCatch: ", e)
}
}

你可以在类外声明函数,并在任何你想要的地方使用

fun <T> tryCatch(block: () -> T) =
try {
block()
} catch (e: Exception) {
e.printStackTrace()
}

使用的例子

class Test {
fun testFun() {
tryCatch {
val res = 9 / 2
res * 5
}
}
}

编辑另一个选项,但是它看起来有点奇怪

fun <T> (() -> T).tryCatch() =
try {
this()
} catch (e: Exception) {
e.printStackTrace()
}

例子
class Test {
fun testFun() = {
val res = 9 / 2
res * 5
}.tryCatch()
}

相关内容

  • 没有找到相关文章

最新更新