Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么try块在Kotlin中的lambda表达式中不返回值?_Java_Kotlin - Fatal编程技术网

Java 为什么try块在Kotlin中的lambda表达式中不返回值?

Java 为什么try块在Kotlin中的lambda表达式中不返回值?,java,kotlin,Java,Kotlin,我有下面的代码,我试图通过lambda表达式返回一个值 { message: Any -> try { ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray() } catch(e: JsonProcessin

我有下面的代码,我试图通过lambda表达式返回一个值

{ 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()
无效的
}