¿Por qué las sentencias throw deben estar encerradas con un bloque de código completo en un cuerpo lambda?

Si hay una sola declaración en una función lambda, podemos omitir la definición del bloque de código completo para ella:

new Thread(() -> System.out.println());

¿Por qué ese no es el caso de las declaraciones que arrojan excepciones? Esto produce un error de compilación que indica'{' expected:

new Thread(() -> throw new RuntimeException());

Por supuesto, encerrar el cuerpo lambda en un bloque de código funciona:

new Thread(() -> {
    throw new RuntimeException();
});

Respuestas a la pregunta(3)

Su respuesta a la pregunta