Доступна ли ссылка на метод для выдачи исключения?

Предположим, у меня есть следующий код:

Runnable exceptionHandler = () -> throw new RuntimeException();

Есть ли способ написать его более кратким, доступным сейчас или, возможно, доступным в будущих выпусках Java? Я ожидаю что-то вроде:

Runnable exceptionHandler = RuntimeException::throw;

Для получения дополнительной информации я намерен использовать этот код для метода, в котором могут возникать исключительные ситуации, но не всегда требуется RuntimeException выброшены. Я хочу дать звонящим свободу делать все, что им захочется, в момент возникновения исключительной ситуации.

Как мне кажется, в Java 8 это невозможно, обсуждалось ли это и есть ли причина, по которой это невозможно?

1 ответ

Exception::throw недействителен, и я не могу найти связанных обсуждений в списках рассылки.

Однако, если ваше намерение состоит в том,чтобы "дать абонентам свободу делать то, что они хотят, в момент возникновения исключительной ситуации", вы можете использовать дизайн, аналогичный CompletableFuture и напишите что-то вроде:

public static void main(String[] args) throws Exception {
    CompletableFuture.runAsync(() -> somethingThatMayThrow())
                     .exceptionally(t -> { t.printStackTrace(); return null; });
}

private static void somethingThatMayThrow() throws RuntimeException {
    throw new RuntimeException();
}

Это работает только с непроверенным исключением.

Другие вопросы по тегам