6

假设我有以下代码:

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

有没有办法让它更简洁,现在可用,或者可能在未来的 Java 版本中可用?我期望以下内容:

Runnable exceptionHandler = RuntimeException::throw;

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

在我看来,这在 Java 8 中是不可能的,是否已经讨论过这个问题,是否有任何理由无法做到这一点?

4

1 回答 1

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();
}

不过,这只适用于未经检查的异常。

于 2014-04-09T10:22:29.787 回答