我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

@SneakyThrows

@SneakyThrowsLombok 提供的一个注解,用来 在不显式声明 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、测试代码,不推荐大范围用于正式生产环境

 

 

posted on 2025-04-26 00:06  我就是奇迹  阅读(65)  评论(0)    收藏  举报