是否有可用于抛出异常的方法参考?

ski*_*iwi 6 java exception java-8 method-reference

假设我有以下代码:

Runnable exceptionHandler = () -> throw new RuntimeException();
Run Code Online (Sandbox Code Playgroud)

有没有办法让它更简洁,现在可用,或者在将来的Java版本中可用?我期待的是:

Runnable exceptionHandler = RuntimeException::throw;
Run Code Online (Sandbox Code Playgroud)

有关额外信息,我打算将此代码用于可能发生异常情况的方法,但并不总是需要RuntimeException抛出.在特殊情况发生时,我想让呼叫者自由地做任何他们想做的事情.

在我看来,Java 8是不可能的,这已经讨论过了,有什么理由不可能吗?

ass*_*ias 2

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();
}
Run Code Online (Sandbox Code Playgroud)

但这仅适用于未经检查的异常。