Guava学习笔记:简化异常处理的Throwables类
2014-09-23 10:40
411 查看
有时候, 当我们我们捕获异常, 并且像把这个异常传递到下一个try/catch块中。Guava提供了一个异常处理工具类, 可以简单地捕获和重新抛出多个异常。例如:
将检查异常转换成未检查异常,例如:
传递异常的常用方法:
1.RuntimeException propagate(Throwable):把throwable包装成RuntimeException,用该方法保证异常传递,抛出一个RuntimeException异常
2.void propagateIfInstanceOf(Throwable, Class<X extends Exception>) throws X:当且仅当它是一个X的实例时,传递throwable
3.void propagateIfPossible(Throwable):当且仅当它是一个RuntimeException和Error时,传递throwable
4.void propagateIfPossible(Throwable, Class<X extends Throwable>) throws X:当且仅当它是一个RuntimeException和Error时,或者是一个X的实例时,传递throwable。
使用实例:
Guava的异常链处理方法:
1.Throwable getRootCause(Throwable)
2.List<Throwable> getCausalChain(Throwable)
3.String getStackTraceAsString(Throwable)
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); } } }
将检查异常转换成未检查异常,例如:
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<X extends Exception>) throws X:当且仅当它是一个X的实例时,传递throwable
3.void propagateIfPossible(Throwable):当且仅当它是一个RuntimeException和Error时,传递throwable
4.void propagateIfPossible(Throwable, Class<X extends Throwable>) throws X:当且仅当它是一个RuntimeException和Error时,或者是一个X的实例时,传递throwable。
使用实例:
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<Throwable> getCausalChain(Throwable)
3.String getStackTraceAsString(Throwable)
相关文章推荐
- Guava学习笔记【5】:简化异常处理的Throwables类
- Guava学习笔记:简化异常处理的Throwables类
- Guava学习笔记(5)--Throwables简化异常处理
- va异常处理学习笔记
- 精通SqlServer2005学习笔记----Sqlserver事物中的异常处理
- C#学习笔记13——异常处理
- Effective C# 学习笔记(四十七)对异常进行strong guarantee 策略处理
- Struts 1 学习笔记-5-3(Struts的自动处理异常以及模式套用)
- ASP.NET MVC3 异常处理 学习笔记
- Effective C# 学习笔记(三十七) 警惕并行处理中的异常处理
- android个人学习笔记:Unable to open sync connection!异常处理
- 关于SQLServer2005的学习笔记——异常捕获及处理
- Effective C# 学习笔记(四十六)对异常进行分类并逐类处理
- 微软企业库5.0学习笔记(四十二)异常处理模块
- spring源码学习笔记-初始化(六)-完成及异常处理
- 转载:学习笔记:oracle异常处理
- oralce学习笔记之异常处理篇
- 异常处理与自定义异常学习笔记
- 黑马程序员——Java异常处理学习笔记
- C++ primer第二次阅读学习笔记(第17章:用于大型程序的工具:异常处理)