一、前言
今天小编在一个开源项目中看到了lombok注解@SneakyThrows
,于是探索实践了一下,有些事情还是要自己操作一下,不然还真的不知道!!
以前就看到项目里有@SneakyThrows
注解,一直没去管他和手动try catch
还有往上抛异常有什么区别?
今天就和大家一起探索一下!!
先说一下结论,赶时间的朋友看了就可以走了哈!!
我们发现,@SneakyThrows
注解在编译的时候自动帮我们try catch
,使用@SneakyThrows
是为了让代码更加简洁,加快我们的开发效率!!所以还是推荐使用@SneakyThrows
来解决异常问题,当然如果是已知异常还是自己手动throw
。
二、导入 Maven
<!--Lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
三、方法测试
public class SneakyTest {
public static void main(String[] args) {
exceptionTest();
}
public static void exceptionTest(){
// 模拟一个异常
FileInputStream fis = new FileInputStream(new File("test.txt"));
}
}
此时Idea提醒我们要捕获异常,不然无法通过编译,给出我们三种解决方案,也就是我们本次要探究的目的!!
我们先第一种方式:
public class SneakyTest {
public static void main(String[] args) throws FileNotFoundException {
exceptionTest();
}
public static void exceptionTest() throws FileNotFoundException {
// 模拟一个异常
FileInputStream fis = new FileInputStream(new File("D:\\test.txt"));
}
}
我们看到我们往上级抛,上级也需要抛,这种一直抛还是要有人处理,所以我们不建议这样!
第二种方式:
public class SneakyTest {
public static void main(String[] args) {
exceptionTest();
}
public static void exceptionTest(){
// 模拟一个异常
try {
FileInputStream fis = new FileInputStream(new File("D:\\test.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
我们在本方法内处理,这样就不需要调用者处理了!!
第三种方式:
也是小编一直疑惑的,为啥会有这个注解,有什么优点吗??
先看解决方式,我们在编译一下看看究竟怎么解决的异常!!
public class SneakyTest {
public static void main(String[] args) {
exceptionTest();
}
@SneakyThrows
public static void exceptionTest(){
// 模拟一个异常
FileInputStream fis = new FileInputStream(new File("D:\\test.txt"));;
}
}
我们编译一下看一下,下面是class文件
public class SneakyTest {
public SneakyTest() {
}
public static void main(String[] args) {
exceptionTest();
}
public static void exceptionTest() {
try {
new FileInputStream(new File("D:\\test.txt"));
} catch (Throwable var1) {
throw var1;
}
}
}
我们发现,这个注解自动帮我们try catch,使用@SneakyThrows
是为了让代码更加简洁,加快我们的开发效率!!
四、总结
这样我们就测试完成了,主要介绍了@SneakyThrows
到底帮我们解决了什么问题,我们为什么要使用@SneakyThrows
。如果觉得有用一键三连走起来,小编谢谢大家了!
有缘人才可以看得到的哦!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92989.html