Guava Throwables是一個Google設計的能夠更好的管理JAVA Exception 拋出的一個工具,但是說實話我自己感覺這個實用性並沒有那麼的大,而Google自己也在文檔中闡明瞭使用Throwables的爭議性很大, 並且說只有在某些特定情況下Throwables才能顯得有用。 我在這裏列出Throwables的一些常用方法,大家見人見智。
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的時候才拋出異常