lombok的@SneakyThrows的原理是将被注解的方法中抛出的异常转化为RuntimeException,而RuntimeException是unchecked的异常,所以方法声明中不需要包含throws。unchecked的异常还包括Error类及其子类。单元测试框架JUnit中抛出的异常即为Error类型,所以测试方法也不用写throws。