LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Проблема не в проверяемых исключениях, как таковых. Проблема в том, что их заабузили в стандартной библиотеке. Если бы они были исключительно как инструмент для пользовательского кода, а в библиотеках было бы принято использовать непроверяемые исключения, у меня претензий бы не было. Изредка кажется удобным заставить вызывающий код обработать исключение. Очень редко, но ситуацию такую представить можно.

А что касается лямбд - проблема не выглядит нерешаемой. Просто они немного забили. Но в целом - надо просто сделать так, чтобы код вроде

@FunctionalInterface
interface Function<T, R, E>
  R apply(T arg) throws E;
}

Выводил тип E как, к примеру, IOException | SQLException. Причём код выше уже работает для одного вида эксепшнов. А также вышеупомянутая концепция типа-объединения уже есть в языке в виде соответствующей catch-конструкции. То бишь в целом в языке уже все кирпичики есть, осталось только их соединить и проблема с лямбдами будет решена.

Исходная версия vbr, :

Проблема не в проверяемых исключениях, как таковых. Проблема в том, что их заабузили в стандартной библиотеке. Если бы они были исключительно как инструмент для пользовательского кода, а в библиотеках было бы принято использовать непроверяемые исключения, у меня претензий бы не было. Изредка кажется удобным заставить вызывающий код обработать исключение. Очень редко, но ситуацию такую представить можно.