文章目录

  • 简介
  • throw小诀窍
  • 总结

java关于throw Exception的一个小秘密

简介

之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unchecked exception来处理。

我们是这样做的:

    static <T> Consumer<T> consumerWrapper(ThrowingConsumer<T, Exception> throwingConsumer) {return i -> {try {throwingConsumer.accept(i);} catch (Exception ex) {throw new RuntimeException(ex);}};}

将异常捕获,然后封装成为RuntimeException。

封装成RuntimeException感觉总是有那么一点点问题,那么有没有什么更好的办法?

throw小诀窍

java的类型推断大家应该都知道,如果是 这样的形式,那么T将会被认为是RuntimeException!

我们看下例子:

public class RethrowException {public static <T extends Exception, R> R throwException(Exception t) throws T {throw (T) t; // just throw it, convert checked exception to unchecked exception}}

上面的类中,我们定义了一个throwException方法,接收一个Exception参数,将其转换为T,这里的T就是unchecked exception。

接下来看下具体的使用:

@Slf4j
public class RethrowUsage {public static void main(String[] args) {try {throwIOException();} catch (IOException e) {log.error(e.getMessage(),e);RethrowException.throwException(e);}}static void throwIOException() throws IOException{throw new IOException("io exception");}
}

上面的例子中,我们将一个IOException转换成了一个unchecked exception。

总结

本文介绍了一种特殊的异常转换的例子,大家可以参考一下。

本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/rethrow-exception

更多精彩内容且看:

  • 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
  • Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
  • Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
  • java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程

欢迎关注我的公众号:程序那些事,更多精彩等着您!
更多内容请访问 www.flydean.com

java关于throw Exception的一个小秘密相关推荐

  1. java throw 什么意思_[转载]java中throw和throws的区别

    throw是一种控制程序流程的特殊方法而已.没有相应的catch的话,可以中止当前的方法继续执行. 关键字:throws 声明方法时候,如果不声明throws的话,那么一般的Exception都要在这 ...

  2. java的throw_浅谈Java的throw与throws

    浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...

  3. Java入门1.2.3—一个老鸟的Java学习心得

    Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌    出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...

  4. JAVA 异常 throw 与 throws

    最近一直throw和throw new -- 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息 throw则是指抛出的一个详细的异常类型. 通常 ...

  5. Java 中处理 Exception 的最佳实践

    Java 中处理 Exception 的最佳实践 在Java中处理异常并不是一个简单的事情.不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样 ...

  6. 【零基础学Java】—throw关键字(四十六)

    [零基础学Java]-throw关键字(四十六) 一.throw关键字 public class demo {public static void main(String[] args) {//创建i ...

  7. java dao修改语句_一个通用的DAO模型实现增删改查

    首先三个架包: mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar 导进去: (从上往下一次调用,实现功能) ---- ...

  8. 用Java写PTA 7-11 设计一个能处理异常的Loan类

    用Java写PTA 7-11 设计一个能处理异常的Loan类 定义一个贷款类Loan,其中有属性: annualInterestRate:double,表示贷款的年利率(默认值:2.5) number ...

  9. java中throw是什么意思_Java中throw和throws的区别是什么

    Java中throw和throws的区别是什么 发布时间:2020-07-22 11:26:39 来源:亿速云 阅读:83 作者:Leah 这篇文章运用简单易懂的例子给大家介绍Java中throw和t ...

最新文章

  1. 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字
  2. Java实现堆排序及详细图解
  3. 快速打开unity manual的方式
  4. 快速排序算法思想及实现
  5. 企业即时通讯一个全新行业的诞生
  6. extjs5(03--项目中文件的加载过程)
  7. 行业观察:2021年LTE将成M2M市场主导技术
  8. python面试问题_Python面试问题
  9. [见得多了就懂了]食物链
  10. 数据仓库模型与缓慢变化维度技术深度剖析-DW商业环境实战
  11. epoll监听文件_epoll
  12. 【工具篇】OBS推流在Bilibli直播平台的设置和应用
  13. 牛客假日团队赛31 A Mowing the Lawn (单调队列维护dp)
  14. 牛客网SQL实战二刷 | Day1
  15. egg(九):下载excel文件,前后端
  16. php 的几种运行方式
  17. 一图读懂昇思MindSpore | 秒懂简介,你想知道的都在这里!
  18. 互联网广告请求链路_生产环境的全链路压测应该怎么做?答案都在这里了
  19. 2D/3D文档查看器ABViewer发布v12,大大提高PDF转DWG的速度丨附下载
  20. kiss原则包括什么_kiss原则包括职场沟通相关阅读-kiss原则包括职场沟通文章阅读-123文学网...

热门文章

  1. java平均差_如何做好描述统计分析
  2. 远程登录另一个mysql 数据库_Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中...
  3. 【玩转cocos2d-x之二十六】数据结构CCDictionary
  4. MFC拖拽文件到任意EDIT控件
  5. 在C++中使用Protocol Buffers
  6. go-zero:微服务框架
  7. 关于 IPv6 大规模部署,给我们带来了什么~
  8. 开天辟地 —— Go scheduler 初始化(二)
  9. 力扣--替换后的最长重复字符
  10. LiveVideoStack公众号2021年终盘点