@SneakyThrows
@SneakyThrows 是 Lombok 提供的一个注解,用来 在不显式声明 throws 的情况下,抛出受检异常(checked exception)。
✅ 常规写法(不使用
@SneakyThrows
):
public void test() throws IOException {
throw new IOException("需要显式 throws");
}
✅ 使用
@SneakyThrows
后:
import lombok.SneakyThrows;
@SneakyThrows
public void test() {
throw new IOException("不需要写 throws,编译照样通过");
}
🌟 它的作用是 ——
偷偷抛异常而不写 throws
-
正常情况下,你抛 IOException、ReflectiveOperationException 等都要 throws
-
用了 @SneakyThrows 后,不需要 try-catch,也不需要 throws
-
Lombok 会在字节码中偷偷加上异常抛出代码 ✅
🚨 使用场景和注意事项:
|
场景 |
是否推荐 |
|---|---|
|
写 demo / 快速实验 |
✅ 可以,减少样板代码 |
|
测试代码中偷懒用 |
✅ 合理 |
|
生产代码中 |
⚠️ 不推荐(不够明确,容易出问题) |
❌ 潜在风险:
-
看起来像是不会抛异常,但其实抛了异常
-
IDE 无法提示你需要处理异常
-
会影响代码可读性和维护性
✅ 小结
|
项 |
值 |
|---|---|
|
来源 |
Lombok |
|
用途 |
抛受检异常时不需 throws 或 try-catch |
|
替代了 |
try-catch 或 throws Exception |
|
推荐使用场景 |
快速 demo、测试代码,不推荐大范围用于正式生产环境 |
浙公网安备 33010602011771号