今天遇到一个陌生注解,查阅资料后发现这个注解的作用在方法抛出受检异常的时候将其自动转换为非受检异常。@SneakyThrows
是 Project Lombok 库提供的一个注解。
什么是受检异常呢,受检异常就是在编译的时候需要显式的去声明或者处理的异常,简单来说就是这类异常需要在方法上使用throws抛出或者使用try-catch捕获处理,最常见的就是对文件流处理的IOException就是受检异常,那么加了这个注解就不用显式的去处理异常编译也可以通过了。
什么是非受检异常,就是编译时不需要显式去处理的异常,非受检异常通常是继承自 RuntimeException
或其子类的异常,比如NullPointerException。
需要注意的是,虽然 @SneakyThrows
可以减少代码的冗余,但在某些情况下也可能会导致代码的可读性下降,因为异常处理被隐藏了起来。因此,在使用时要根据实际情况权衡利弊。