Guava Throwables是一个Google设计的能够更好的管理JAVA Exception 抛出的一个工具,但是说实话我自己感觉这个实用性并没有那么的大,而Google自己也在文档中阐明了使用Throwables的争议性很大, 并且说只有在某些特定情况下Throwables才能显得有用。 我在这里列出Throwables的一些常用方法,大家见人见智。 


  1. RuntimeException propagate(Throwable) 

    Throwables 把任何Throwable包装成 RuntimeException 然后抛出。我认为这在J2EE的情况下可能有些用,大家知道在EJB 的SessionBean或者Spring 的用事务包装的业务层的方法,默认只有在出RuntimeException的时候才会触发事务回滚, 这个时候可以用

try {
     someMethodThatCouldThrowAnything
();
   
} catch (Throwable t) {
     
throw Throwables.propagate(t); // 但是可以直接用 throw new RuntimeException()代替,而且更加明显
   
}

 

2   .void propagateIfInstanceOf(Throwable, Class<X extends Exception>) 

  只有给定Throwable是指定EXCEPTION 的时候,才抛出指定EXCEPTION异常


3. void propagateIfPossible(Throwable)

    只有Throwable是RuntimeException或者是Error的时候才抛出异常


4. void propagateIfPossible(Throwable, Class<X extends Throwable>) 

  只有Throwable是RuntimeException或者是Error或者是指定EXCEPTION的时候才抛出异常