我喜欢实现这样的代码:
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()
}