gpt4 book ai didi

java - 是否可以使用 lambda 表达式在 java 中实现通用的 try catch 方法?

转载 作者:行者123 更新时间:2023-12-03 05:58:35 25 4
gpt4 key购买 nike

我一直在尝试创建一个像这样的通用 trycatch 方法:

public static void tryCatchAndLog(Runnable tryThis) {
try {
tryThis.run();
} catch (Throwable throwable) {
Log.Write(throwable);
}
}

但是,如果我尝试像这样使用它,我会得到一个未处理的异常:

tryCatchAndLog(() -> {
methodThatThrowsException();
});

如何实现这个以便编译器知道 tryCatchAndLog 将处理异常?

最佳答案

试试这个:

@FunctionalInterface
interface RunnableWithEx {

void run() throws Throwable;
}

public static void tryCatchAndLog(final RunnableWithEx tryThis) {
try {
tryThis.run();
} catch (final Throwable throwable) {
throwable.printStackTrace();
}
}

然后这段代码编译:

public void t() {
tryCatchAndLog(() -> {
throw new NullPointerException();
});

tryCatchAndLog(this::throwX);

}

public void throwX() throws Exception {
throw new Exception();
}

关于java - 是否可以使用 lambda 表达式在 java 中实现通用的 try catch 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com