简介

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

我们是这样做的:

static Consumer consumerWrapper(

ThrowingConsumer 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 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

java throw异常_Java throw Exception实现异常转换相关推荐

  1. java 数字运算异常_Java基础之:异常及异常处理

    Java基础之:异常及异常处理 我们将java程序执行过程中出现的不正常现象称为异常,例如:之前遇到的数组下标越界异常,空指针异常等等 执行过程中发生的异常事件分为两类: Error(错误):Java ...

  2. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...

    [填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...

  3. java栈空异常_Java如何处理空堆栈异常?

    在Java编程中,如何处理空堆栈异常? 本例展示了如何使用Date类的System.currentTimeMillis()方法和Stack类的s.empty(),s.pop()方法来处理空堆栈异常. ...

  4. java throw异常_java throw拋出异常详解

    之前给大家介绍了java throws声明异常,那么和throws不一样的是throw语句用来直接拋出一个异常,后接一个可拋出的异常类对象,下面的话一起来详细的了解一下throw拋出异常吧. 下面是语 ...

  5. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  6. java异常处理机制_Java编程中的异常机制

    本文旨在以初学者的角度来学习Java异常的知识,尽量简单,一些细枝末节的知识不会讲述,但不影响对知识的掌握. (比如try-catch可以嵌套,不太会这么用) 1.什么是异常 我们先举个例子 int ...

  7. Java主要处理哪些类型的异常_Java技术高效处理异常有哪些呢?

    ava应用程序中的异常处理可以告诉用户构建应用程序的架构强度.架构是指在应用程序的各个层面上所做出的并始终遵守的决策.其中最重要的决策之一便是应用程序中类.子系统或层之间进行互相通信的方式.方法通过J ...

  8. java 线程崩溃_java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理...

    1.application应用程序注入自定义钩子程序 java语言本身提供一个很好的Runtime类,可以使我们很好的获取运行时信息.其中有一个方法是 public void addShutdownH ...

  9. java 如何忽略异常_java中如何解决异常

    原文 | dzone.com/articles/9-- 作者 | Thorben Janssen 翻译 | geekymv 无论你是初学者还是经验丰富的开发人员,对于你和你的团队来说,提高异常处理的能 ...

  10. java sql异常_java.sql.SQLException: Io 异常: Got minus one from a

    java.sql.SQLException: Io 异常: Got minus one from a read call at oracle.jdbc.driver.DatabaseError.thr ...

最新文章

  1. 基于切面和注解的Redis分布式实现
  2. 揭秘物联网之城无锡鸿山的科技密码
  3. Redis Labs再次修改许可,没用几个月的Commons Clause或被删除
  4. [ARM-assembly]-全局变量/静态全局变量/初始化/未初始化变量的存放位置分析
  5. 如何发送Head请求
  6. ajax请求后台报没有body_前端常见面试 - 请求篇
  7. 怎么把图片上的字盖住_吃完大闸蟹怎么去腥?实验了 12 种方法,第 1 名居然是.........
  8. 在java中的ascii_在Java中绘制ASCII艺术
  9. 单例设计模式-序列化破坏单例模式原理解析及解决方案
  10. 科研绘图工具软件_如何在Windows 10 Mail中使用绘图工具
  11. Python os.chdir() 方法
  12. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(2) - SSE程序设计环境概述
  13. 计算机应用基础0035形考答案,计算机应用基础0035形考答案
  14. CSS变量(自定义属性)实践指南
  15. 2022-2028全球及中国计算流体动力学软件和服务行业研究及十四五规划分析报告
  16. 海康威视+虹软人脸识别
  17. 利用Matlab App Designer简单设计程序
  18. 补肾健脑的中药有哪些?
  19. 什么明星有计算机等级证,明星CP名也分等级?朱一龙王一博还好,看到胡一天:太有才了...
  20. Spring_AOP(execution表达式)

热门文章

  1. 网站优化之sitemap.xml网站地图的写法
  2. AAAI 2021 Structured Co-reference Graph Attention for Video-grounded Dialogue
  3. 互联网防骗指南[摘录58同城]
  4. JeecgBoot 3.4.3-GA 版本发布,开源免费的企业级低代码平台
  5. 离散数学 第一章 命题逻辑 1-5重言式与蕴含式
  6. 青龙自动薅羊毛—【万年历】秒到
  7. mysql 悲观锁 详细讲解_mysql 悲观锁详解
  8. 错误码errno和perror函数
  9. win7升级win10系统
  10. C#WPF控件跟随窗口最大化