java throw异常_Java throw Exception实现异常转换
简介
之前的文章我们讲到,在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实现异常转换相关推荐
- java 数字运算异常_Java基础之:异常及异常处理
Java基础之:异常及异常处理 我们将java程序执行过程中出现的不正常现象称为异常,例如:之前遇到的数组下标越界异常,空指针异常等等 执行过程中发生的异常事件分为两类: Error(错误):Java ...
- JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...
[填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...
- java栈空异常_Java如何处理空堆栈异常?
在Java编程中,如何处理空堆栈异常? 本例展示了如何使用Date类的System.currentTimeMillis()方法和Stack类的s.empty(),s.pop()方法来处理空堆栈异常. ...
- java throw异常_java throw拋出异常详解
之前给大家介绍了java throws声明异常,那么和throws不一样的是throw语句用来直接拋出一个异常,后接一个可拋出的异常类对象,下面的话一起来详细的了解一下throw拋出异常吧. 下面是语 ...
- java runnable 异常_JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- java异常处理机制_Java编程中的异常机制
本文旨在以初学者的角度来学习Java异常的知识,尽量简单,一些细枝末节的知识不会讲述,但不影响对知识的掌握. (比如try-catch可以嵌套,不太会这么用) 1.什么是异常 我们先举个例子 int ...
- Java主要处理哪些类型的异常_Java技术高效处理异常有哪些呢?
ava应用程序中的异常处理可以告诉用户构建应用程序的架构强度.架构是指在应用程序的各个层面上所做出的并始终遵守的决策.其中最重要的决策之一便是应用程序中类.子系统或层之间进行互相通信的方式.方法通过J ...
- java 线程崩溃_java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理...
1.application应用程序注入自定义钩子程序 java语言本身提供一个很好的Runtime类,可以使我们很好的获取运行时信息.其中有一个方法是 public void addShutdownH ...
- java 如何忽略异常_java中如何解决异常
原文 | dzone.com/articles/9-- 作者 | Thorben Janssen 翻译 | geekymv 无论你是初学者还是经验丰富的开发人员,对于你和你的团队来说,提高异常处理的能 ...
- 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 ...
最新文章
- C++:报错解决合集
- linux安装vsftp教程,CentOS7 vsftp 安装与配置(视频教程)
- crt python_SecureCRT Python
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
- 从C语言的角度重构数据结构系列(九)-数据结构哈希表分糖果
- NoSQL入门第一天——NoSQL入门与基本概述
- php ci post 请求,CI框架中判断post,ajax,get请求的方法
- [51nod1201]整数划分
- matlab 二维数组转一维数组中,将二维数组映射到一维数组上
- 改变自己就是改变世界的开始
- (二十一)访问者模式-代码实现
- 译: 6. 任务调度(定时执行任务)
- 北京市延庆区谷歌卫星地图下载
- Linux学习16-磁盘分区MSDOS与GPT的区别
- html代码数字上下滚动特效,js实现数字滚动特效
- 很好奇这个背景图片,盯着看能感受到裸眼3D有没有
- Android Reboot 命令执行过程
- html table td 居中显示,table td怎么垂直居中显示 详解table中如何隐藏td?
- Arduino 读取 Pin2 的电平信号,并把结果打印到串口,也同时反映到 LED 灯
- 头哥教学平台-泰坦尼克生还预测-可视化与探索性数据分析
热门文章
- python文件打开模式rb表示以只读模式打开文件_【Python】python文件打开方式详解——a、a+、r+、w+、rb、rt区别
- 银河麒麟桌面V10SP1安装nosqlbooster 可视化工具
- 清理linux 系统内存缓存
- 为泄愤程序员攻击北京摇号网站昨受审 曾为市高考状元
- 我与忠和资本的未结之缘
- 壹基金,李连杰的长尾理论
- python画笔颜色_Python画图 plt.plot()函数细节颜色字符,风格字符,和标记字符
- Haproxy+Nginx搭建负载均衡集群
- ipad、iphone 怎么真机调试
- 支持流量计费的云服务器,云服务器流量计费功能