Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >lombok注解@SneakyThrows探索以及与try catch、throws Exception的区别

lombok注解@SneakyThrows探索以及与try catch、throws Exception的区别

作者头像
掉发的小王
发布于 2022-07-11 08:11:15
发布于 2022-07-11 08:11:15
2.1K00
代码可运行
举报
文章被收录于专栏:小王知识分享小王知识分享
运行总次数:0
代码可运行

一、前言

今天小编在一个开源项目中看到了lombok注解@SneakyThrows,于是探索实践了一下,有些事情还是要自己操作一下,不然还真的不知道!! 以前就看到项目里有@SneakyThrows注解,一直没去管他和手动try catch还有往上抛异常有什么区别? 今天就和大家一起探索一下!!

先说一下结论,赶时间的朋友看了就可以走了哈!!

==我们发现,@SneakyThrows注解在编译的时候自动帮我们try catch,使用@SneakyThrows是为了让代码更加简洁,加快我们的开发效率!!所以还是推荐使用@SneakyThrows来解决异常问题,当然如果是已知异常还是自己手动throw。==

二、导入 Maven

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--Lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<scope>provided</scope>
</dependency>

三、方法测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SneakyTest {

    public static void main(String[] args) {
        exceptionTest();
    }

    public static void exceptionTest(){

        // 模拟一个异常
        FileInputStream fis = new FileInputStream(new File("test.txt"));

    }
}

此时Idea提醒我们要捕获异常,不然无法通过编译,给出我们三种解决方案,也就是我们本次要探究的目的!!

我们先第一种方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"));

    }
}

我们看到我们往上级抛,上级也需要抛,这种一直抛还是要有人处理,所以我们不建议这样!

第二种方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
        }

    }
}

我们在本方法内处理,这样就不需要调用者处理了!!

第三种方式: 也是小编一直疑惑的,为啥会有这个注解,有什么优点吗??

先看解决方式,我们在编译一下看看究竟怎么解决的异常!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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


Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入解析Lombok中的@SneakyThrows注解原理
Lombok是一个Java库,它通过注解的方式简化了Java代码的编写。其中,@SneakyThrows注解就是Lombok提供的一个用于简化异常处理的工具。
公众号:码到三十五
2024/03/19
1.6K0
lombok系列2:lombok注解详解
看到第一篇《初识lombok》你可能意犹未尽,本文我们按照场景来介绍一下常用的注解。
pollyduan
2019/11/04
1K0
Java 异常 总结 try catch finally Exception
表示程序在运行过程中出现的非正常情况,编写代码的过程中尽可能少的减少异常出现的情况
红目香薰
2022/11/28
3520
简化开发|Lombok神器带你消除冗余代码
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务过程中冗余的代码,尤其是简单的Java模型对象(POJO)。而当我们如果在开发环境中使用Lombok开发插件后,可以省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生产这些方法,并没有如反射那样降低程序的性能。本文将带大家详细介绍关于Lombok的使用以及原理。
浅羽技术
2020/12/07
5530
简化开发|Lombok神器带你消除冗余代码
最全一篇Lombok使用讲解,及原理,真香啊
Lombok 是一款好用顺手的工具,就像 Google Guava 一样。可用来帮助开发人员消除 Java 的冗长代码,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。
公众号 IT老哥
2020/09/16
13.1K0
最全一篇Lombok使用讲解,及原理,真香啊
十分钟搞懂Java效率工具Lombok使用与原理
Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。
java思维导图
2019/12/05
6930
十分钟搞懂Java效率工具Lombok使用与原理
Java异常处理
异常:在Java语言中,将程序执行中发生的不正常情况称为“异常” 开发过程中的语法错误和逻辑错误不是异常)
Java_慈祥
2024/08/06
1410
Java异常处理
大数据必学Java基础(七十):不要用字符流去操作非文本文件
.jpg、 .mp3 、 .mp4、.doc 、.ppt -- 建议使用字节流操作
Lansonli
2022/10/05
3630
大数据必学Java基础(七十):不要用字符流去操作非文本文件
Lombok常用注解
作用类上:生成所有成员变量的getter/setter方法 成员变量:生成该成员变量的getter/setter方法 案例:
ha_lydms
2023/08/10
2180
Lombok常用注解
你有没有使用过这些编程骚操作(一)- Lombok(Part B)
@Cleanup注解可以生成对资源进行关闭的代码,无须手动通过try-catch-finally代码块判断并关闭所有的资源
RiemannHypothesis
2022/08/19
4370
你有没有使用过这些编程骚操作(一)- Lombok(Part B)
java-流处理
例如要写入整数10到文件中,字节流会把数字10的ASCII码写进去,而字符流是以字符1和0写入。
luxuantao
2021/02/24
3720
优雅的Java工具库Lombok
最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中
互扯程序
2018/10/08
1.2K0
优雅的Java工具库Lombok
99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!
  99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!
不会飞的小鸟
2020/03/30
6200
Java 之 Lombok 必知必会
在目前众多编程语言中,Java 语言的表现还是抢眼,不论是企业级服务端开发,还是 Andorid 客户端开发,都是作为开发语言的首选,甚至在大数据开发领域,Java 语言也能占有一席之地,如 Hadoop,Spark,Flink 大数据等。而作为已经诞生 24 年的 Java 相比其他语言来说,编写起来略显得冗长和复杂,而为了能极大提升 Java 开发的效率和代码简洁性,一个 Java 库 Lombok 就这样诞生了。
闻人的技术博客
2019/09/19
9170
Java 之 Lombok 必知必会
关于Java异常Exception最常见的十大问题1 受检异常 VS 非受检异常2 异常管理的最佳实践3 为什么在try语句中定义的变量不能在catch和finally语句中使用?4 为什么Doubl
简单的说,受检异常必须在方法中被显示的捕捉,或者在方法的throws语句中被抛出。 非受检异常是由哪些在程序编译时不能被解决的问题所引起的,常见的有除以0,空指针等等。 受检异常非常重要,因为你希望其他使用你的程序API的开发者知道如何去处理这些异常。例如,IOException是一个使用的很多的受检异常,RuntimeException则是一个最常见的非受检异常。
desperate633
2018/08/22
1.2K0
关于Java异常Exception最常见的十大问题1 受检异常 VS 非受检异常2 异常管理的最佳实践3 为什么在try语句中定义的变量不能在catch和finally语句中使用?4 为什么Doubl
【转】java中异常与try catch finally详解
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。
洋仔聊编程
2019/06/11
9020
优雅的JAVA工具库LOMBOK
最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中
java架构师
2019/01/03
5470
Java 文件与 IO【复习备考简单练习 二】
说明:仅仅用于复习备考 IO 与文件操作。 题目:从 C 盘的 test 中读取一个文件并输出到显示屏上。 package aaa; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class Main { static String file = "C:\\test.txt"; // public static void mai
Lokinli
2023/03/09
1050
java异常处理(较详细)「建议收藏」
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的。 比如: 客户输入数据的格式, 读取文件是否存在, 网络是否始终保持通畅等等。
全栈程序员站长
2022/08/31
2.7K0
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。
YourBatman
2019/09/03
3.3K0
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
推荐阅读
相关推荐
深入解析Lombok中的@SneakyThrows注解原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验