为什么try块没有在Kotlin中的lambda表达式中返回值



我有以下代码,其中我试图通过lambda表达式返回一个值。

{ message: Any ->
try {
ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray()
}
catch(e: JsonProcessingException)
{
e.printStackTrace()
}
null
},

但是,代码总是返回null。在调试时,我发现程序的执行是通过try块执行其代码,但也在try-catch块之外执行null?为什么会发生这种情况?它不应该从try块内部返回并退出lambda表达式吗?

(表达式作为参数传递给期望函数值的函数(

删除最后一行中的null。lambda中的最后一行指定要返回的值。由于您已经将null写为最后一行,所以无论您的表达式执行什么,它总是返回null。

https://kotlinlang.org/docs/reference/lambdas.html

在catch块内移动null。Try的一个表达式,可以在kotlin参考中找到

像这样:

try {
ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray()
} catch(e: JsonProcessingException) {
e.printStackTrace()
null
}

返回lambda的最后一行,因此在您的情况下始终为null。

最新更新