当前位置: 移动技术网 > IT编程>开发语言>Java > Java throw Exception实现异常转换

Java throw Exception实现异常转换

2020年05月13日  | 移动技术网IT编程  | 我要评论

大丑风流记第二部,含山房屋出租,百姓阁首页me

简介

之前的文章我们讲到,在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。

总结

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

本文的例子

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网