Ответ 1
Первоначально были введены функции-try-blocks, чтобы улавливать исключения, создаваемые в конструкторах или деструкторах подобъектов. Синтаксис был расширен до обычных функций для согласованности.
Конечно, было бы возможно ввести такой синтаксис для лямбда. Однако, в отличие от конструкторов и деструкторов, нет практического преимущества перед простом включением try-блока в другую пару { }
, за исключением того, что последнее выглядит намного менее неясным.