java关于throw Exception的一个小秘密
JAVA 一个 关于 秘密 Exception throw
2023-09-11 14:19:26 时间
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的类型推断大家应该都知道,如果是
我们看下例子:
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
欢迎关注我的公众号:程序那些事,更多精彩等着您!
更多内容请访问 www.flydean.com
相关文章
- Java if判断对象为null时,null放在比较运算符的左边还是右边?哪种才是java标准?进来看看你就知道了
- 当一个Java 全栈高级开发工程师 入职拿到新电脑,他又会做什么呢?
- Java当中多个pdf文件合并为一个
- Java核心技术卷I基础知识3.1 一个简单的Java应用程序
- CSDN日报191113:Java 8 Optional 类错误使用的26个示例;Redis常见面试题(带答案)
- Java并发JUC(java.util.concurrent)JMM内存模型
- java 间隔5秒执行一个方法
- Java基础语法:1.第一个java程序
- Java中Array、List、Set、Map
- java中文排序
- 最简单的一个java驱动jdbc链接mysql数据库
- 『Java练习生的自我修养』java-se进阶⁵ • 常用IO流
- JAVA_SE进阶day04 API
- 新秀翻译(一个)——Java在继承和组合
- 【Java实验】类与对象
- java中,一个类实现某个接口,必须重写接口中的所有方法吗?
- Java idea 创建SqlMapConfig.xml,需要新增一个mybatis-cfg.xml模板
- Java //PP2.10 编写一个程序,确定瓶子里的硬币总面值并以美元和美分为单位打印输出总钱数。读取分别代表25美分、10美分、5美分、1美分硬币数量的整数