Java 为什么try块在Kotlin中的lambda表达式中不返回值?
我有下面的代码,我试图通过lambda表达式返回一个值Java 为什么try块在Kotlin中的lambda表达式中不返回值?,java,kotlin,Java,Kotlin,我有下面的代码,我试图通过lambda表达式返回一个值 { message: Any -> try { ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray() } catch(e: JsonProcessin
{ message: Any ->
try {
ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray()
}
catch(e: JsonProcessingException)
{
e.printStackTrace()
}
null
},
但是,代码总是返回null。在调试时,我发现程序的执行是通过try块执行代码,然后在try-catch块之外执行null
?为什么会这样?它是否应该从try块内部返回并退出lambda表达式
(表达式作为参数传递给期望函数值的函数)返回lambda的最后一行,因此在您的情况下始终为null。从最后一行删除该null。lambda中的最后一行指定您试图返回的值。因为您已将null作为最后一行写入,所以无论您的表达式执行什么,它始终返回null
将
null
移动到捕捉块内。
Try是一个表达式,可以在kotlin中找到
像这样:
试试看{
ObjectMappers.getObjectMapper().writeValueAsString(message.toByteArray())
}catch(e:JsonProcessingException){
e、 printStackTrace()
无效的
}