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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node.js 搭建一个 API 接口服务(实战)
因为最近打算自己搭建一个自己的博客系统,用来记录日常的学习和提升一下写作水平,所以能就打算自己搭建一下前后端项目。在网上找了下,也没有找到合适(现成)的项目,所以就打算自己动手来搭建一下。这篇文章主要描述如何搭建一个node的API接口服务。
五月君
2021/01/27
8.8K0
Node.js 搭建一个 API 接口服务(实战)
node-koa 框架 项目搭建 🏗
---- 这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战」 代码[链接🔗]:(https://gitee.com/yang-yiming1234/koa/tree/master) 持续更新~ 简介 Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了
用户4793865
2023/01/12
3.6K0
Web前端学习 第8章 egg基础教程4 sequelize
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。
学习猿地
2020/06/24
1.4K0
Egg.js 笔记二 目录结构和内置对象
Application 是全局应用对象,在一个应用中,只会实例化一个,它继承自 Koa.Application,在它上面我们可以挂载一些全局的方法和对象。我们可以轻松的在插件或者应用中扩展 Application 对象。
tonglei0429
2019/07/22
1.3K0
基于 egg.js 构建 graphql api 服务
Egg.js 简介:https://eggjs.org/zh-cn/index.html
4O4
2022/04/25
1.9K0
基于 egg.js 构建 graphql api 服务
Egg-TS-Sequelize的使用
Egg 官方文档:https://www.eggjs.org/zh-CN/tutorials/sequelize
程序员NEO
2023/09/28
3120
Egg-TS-Sequelize的使用
Serverless + Egg.js 后台管理系统实战
作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个非常优秀的企业级框架,它的高扩展性和丰富的插件,极大的提高了开发效率。开发者只需要关注业务就好,比如要使用 redis,引入 egg-redis 插件,然后简单配置就可以了。正因为如此,第一次接触它,我便喜欢上了它,之后也用它开发过不少应用。
网站运维工程师
2020/03/11
5K0
入门 | egg.js 入门之egg-jwt
这里创建并安装完成以后,需要再次初始化俩包,分别为egg-cors与egg-jwt token 生成的验证包
mySoul
2020/08/03
1.5K0
Egg.js试水 - 文章增删改查【前后端分离】
上一篇文章讲的是后端渲染的项目 - Egg.js 试水 - 天气预报。但是没有引入数据库。这次的试水项目是文章的增删改查,将数据库引进,并且实现前后端分离。
Jimmy_is_jimmy
2020/10/15
3.4K0
治电EggJS开发规范
函数/方法注释放置于函数/方法的上方,主要描述函数/方法功能以及参数类型,参数和返回值说明
治电小白菜
2020/08/25
4.7K0
治电EggJS开发规范
eggjs快速入门
每个中间件就像是洋葱的一层,所有的请求经过一个中间件都会执行两次,这样可以非常方便的后置处理逻辑。
不作声
2020/07/06
1.3K0
前端构建 DevOps - 搭建 DevOps 基础平台(上)
在上一个博客中,已经通过 Egg 对 Gitlab Api 进行了基础的封装,本文将会围绕 DevOps 流程介绍项目设计(偏后台),需要读者具备一定的后端知识储备。
Cookieboty
2020/10/23
1.7K0
前端构建 DevOps - 搭建 DevOps 基础平台(上)
使用 Egg + Vue 开发在线文档管理平台(8000字,手把手教程)
团队中会遇到在线文档管理的需求,包括技术文档,接口文档, excel 文档,和产品原型的托管等需求,一直没有找到合适的开源项目来满足需求,所以动手实现了个文档管理系统(实现起来并不复杂,该教程只是提供思路,并非最佳实践)
一只图雀
2020/12/16
4K0
使用 Egg + Vue 开发在线文档管理平台(8000字,手把手教程)
Node.js ORM 框架 sequelize 实践
本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 Node.js ORM 框架 sequelize 实践 最近在做积木系统2.0,这次使用的nodejs
IMWeb前端团队
2018/01/08
3.6K0
基于Vue2和Node.js的反欺诈系统设计与实现
最近包工头喊农民工小郑搬砖,小郑搬完砖后沉思片刻,决定写篇小作文分享下,作为一个初学者的全栈项目,去学习它的搭建,到落地,再到部署维护,是非常好的。
江涛学编程
2021/09/01
2.3K0
基于Vue2和Node.js的反欺诈系统设计与实现
钢材信息小程序开发总结(三) ---EggJS
使用access_token请求获取前一天的用户画像 注意: 在零点前后数据会获取不到
治电小白菜
2020/08/25
1.3K0
前后端全部用 js 开发是什么体验(Hybrid + Egg.js经验分享)
对于我们而言,在项目初期我们并没有对应两个端的开发人员,并且初期的版本需要大量的迭代和测试,所以在这种条件下采用原生开发是不合适的
五月君
2020/06/28
3K0
前后端全部用 js 开发是什么体验(Hybrid + Egg.js经验分享)
【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)
微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全、便捷、专业的在线支付服务。以“微信支付,不止支付”为核心理念,为个人用户创造了多种便民服务和应用场景。微信支付为各类企业以及小微商户提供专业的收款能力,运营能力,资金结算解决方案,以及安全保障。用户可以使用微信支付来购物、吃饭、旅游、就医、交水电费等。企业、商品、门店、用户已经通过微信连在了一起,让智慧生活,变成了现实。
愚公搬代码
2022/10/31
9480
【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)
koa实战_2023-02-28
sequelize这个包专门用于项目中处理关系型数据库的操作,它是基于 promise 的
用户10377376
2023/02/28
1.3K0
Serverless + Egg.js 后台管理系统实战
作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个非常优秀的企业级框架,它的高扩展性和丰富的插件,极大的提高了开发效率。开发者只需要关注业务就好,比如要使用 redis,引入 egg-redis 插件,然后简单配置就可以了。正因为如此,第一次接触它,我便喜欢上了它,之后也用它开发过不少应用。 有了如此优秀的框架,那么如何将一个 Egg.js 的服务迁移到 Serverless 架构上呢? 背景 我在文章《基于 Serverless Com
腾讯云serverless团队
2020/03/20
4.5K0
推荐阅读
相关推荐
Node.js 搭建一个 API 接口服务(实战)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验