• 技术文章 >Java >java教程

    Java-类库-Guava-Throwables类

    黄舟黄舟2017-01-19 13:25:39原创633
    有时候, 当我们我们捕获异常, 并且像把这个异常传递到下一个try/catch块中。Guava提供了一个异常处理工具类, 可以简单地捕获和重新抛出多个异常。

    [code]import java.io.IOException;
    import org.junit.Test;
    import com.google.common.base.Throwables;
    
    public class ThrowablesTest {
    
        @Test
        public void testThrowables(){
            try {
                throw new Exception();
            } catch (Throwable t) {
                String ss = Throwables.getStackTraceAsString(t);
                System.out.println("ss:"+ss);
                Throwables.propagate(t);
            }
        }
    
        @Test
        public void call() throws IOException {
            try {
                throw new IOException();
            } catch (Throwable t) {
                Throwables.propagateIfInstanceOf(t, IOException.class);
                throw Throwables.propagate(t);
            }
        }    
    }

    将检查异常转换成未检查异常,例如:

    [code]import java.io.InputStream;
    import java.net.URL;
    import org.junit.Test;
    import com.google.common.base.Throwables;
    
    public class ThrowablesTest {
    
        @Test
        public void testCheckException(){
            try {  
                URL url = new URL("http://ociweb.com");  
                final InputStream in = url.openStream();  
                // read from the input stream  
                in.close();  
            } catch (Throwable t) {  
                throw Throwables.propagate(t);  
            }  
        }
    }

     传递异常的常用方法:

      1.RuntimeException propagate(Throwable):把throwable包装成RuntimeException,用该方法保证异常传递,抛出一个RuntimeException异常

      2.void propagateIfInstanceOf(Throwable, Class) throws X:当且仅当它是一个X的实例时,传递throwable

      3.void propagateIfPossible(Throwable):当且仅当它是一个RuntimeException和Error时,传递throwable

      4.void propagateIfPossible(Throwable, Class) throws X:当且仅当它是一个RuntimeException和Error时,或者是一个X的实例时,传递throwable。

    [code]import java.io.IOException;
    import org.junit.Test;
    import com.google.common.base.Throwables;
    
    public class ThrowablesTest {    
        @Test
        public void testThrowables(){
            try {
                throw new Exception();
            } catch (Throwable t) {
                String ss = Throwables.getStackTraceAsString(t);
                System.out.println("ss:"+ss);
                Throwables.propagate(t);
            }
        }
    
        @Test
        public void call() throws IOException {
            try {
                throw new IOException();
            } catch (Throwable t) {
                Throwables.propagateIfInstanceOf(t, IOException.class);
                throw Throwables.propagate(t);
            }
        }
    
        public Void testPropagateIfPossible() throws Exception {
              try {
                  throw new Exception();
              } catch (Throwable t) {
                Throwables.propagateIfPossible(t, Exception.class);
                Throwables.propagate(t);
              }
    
              return null;
        }
    }

     Guava的异常链处理方法:

      1.Throwable getRootCause(Throwable)

      2.List getCausalChain(Throwable)

      3.String getStackTraceAsString(Throwable)

    以上就是Java-类库-Guava-Throwables类的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Java-类库-Guava-Immutable(不可变)集合 下一篇:Java-类库-Guava-Ordering比较器
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 一招教你使用java快速创建Map(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一文讲解Java中初始化List集合的8种方式(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网