Java throw Exception实现异常转换
程序员文章站
2022-06-22 10:48:32
简介之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unchecked exception来处理。我们是这样做的: static co...
简介
之前的文章我们讲到,在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。
总结
本文介绍了一种特殊的异常转换的例子,大家可以参考一下。
本文的例子
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。