简介

之前的文章我们讲到,在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. C++:报错解决合集
  2. linux安装vsftp教程,CentOS7 vsftp 安装与配置(视频教程)
  3. crt python_SecureCRT Python
  4. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
  5. 从C语言的角度重构数据结构系列(九)-数据结构哈希表分糖果
  6. NoSQL入门第一天——NoSQL入门与基本概述
  7. php ci post 请求,CI框架中判断post,ajax,get请求的方法
  8. [51nod1201]整数划分
  9. matlab 二维数组转一维数组中,将二维数组映射到一维数组上
  10. 改变自己就是改变世界的开始
  11. (二十一)访问者模式-代码实现
  12. 译: 6. 任务调度(定时执行任务)
  13. 北京市延庆区谷歌卫星地图下载
  14. Linux学习16-磁盘分区MSDOS与GPT的区别
  15. html代码数字上下滚动特效,js实现数字滚动特效
  16. 很好奇这个背景图片,盯着看能感受到裸眼3D有没有
  17. Android Reboot 命令执行过程
  18. html table td 居中显示,table td怎么垂直居中显示 详解table中如何隐藏td?
  19. Arduino 读取 Pin2 的电平信号,并把结果打印到串口,也同时反映到 LED 灯
  20. 头哥教学平台-泰坦尼克生还预测-可视化与探索性数据分析

热门文章

  1. python文件打开模式rb表示以只读模式打开文件_【Python】python文件打开方式详解——a、a+、r+、w+、rb、rt区别
  2. 银河麒麟桌面V10SP1安装nosqlbooster 可视化工具
  3. 清理linux 系统内存缓存
  4. 为泄愤程序员攻击北京摇号网站昨受审 曾为市高考状元
  5. 我与忠和资本的未结之缘
  6. 壹基金,李连杰的长尾理论
  7. python画笔颜色_Python画图 plt.plot()函数细节颜色字符,风格字符,和标记字符
  8. Haproxy+Nginx搭建负载均衡集群
  9. ipad、iphone 怎么真机调试
  10. 支持流量计费的云服务器,云服务器流量计费功能