欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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。

总结

本文介绍了一种特殊的异常转换的例子,大家可以参考一下。

本文的例子

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