Я бы не рекомендовал использовать здесь Optional, поскольку он не предназначен для замены простых случаев "если".
Вместо этого инвертируйте условия if
, чтобы удалить вложение:
if (!operation_1)
throw_1;
if(!operation_2)
throw_2;
if(! operation_3)
trow_3;
...
...
Что касается вашего кода, вы не можете просто связать orElseThrow
методы, как показано, потому что первый вызов orElseThrow
вернет значение, инкапсулированное в Optional, если оно присутствует, иначе вызовет предоставленное исключение, таким образом, результат этого вызова методабольше не является Optional
.