gpt4 book ai didi

java - Lombok 注解@SneakyThrows

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:37:51 32 4
gpt4 key购买 nike

我对@SneakyThrows 可用于偷偷抛出已检查的异常有疑问,而无需在您的方法的 throws 子句中实际声明它。

public class Demo {

public static void main(String[] args) {

}

private void throwE() throws ClassNotFoundException {

}

@SneakyThrows
private void t() {
throwE();
}
}

这里是lombok生成的

public class Demo {
public Demo() {
}

public static void main(String[] args) throws IOException {
}

private void throwE() throws ClassNotFoundException {
}

private void t() {
try {
this.throwE();
} catch (Throwable var2) {
throw var2;
}
}
}

为什么 lombok 生成的代码可以在不声明 throws 子句的情况下伪造编译器。

最佳答案

参见 @SneakyThrows ,它使用 Lombok.sneakyThrow(t) 而不是 var2:

public void run() {
try {
throw new Throwable();
} catch (Throwable t) {
throw Lombok.sneakyThrow(t);
}
}

关于java - Lombok 注解@SneakyThrows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53412437/

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