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是不可能的,这已经讨论过了,有什么理由不可能吗?
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)
但这仅适用于未经检查的异常。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |