捕获一个异常然后接着抛出另一个异常,并把原始异常的信息保存下来的是一种典型的链式处理,被称为“异常链”。
所有Throwable的子类在构造器中都可以接受一个cause对象作为参数。这个cause就是来表示原始异常,这样可以把原始异常传递给新的异常,使得即使你在当前位置创建并抛出了新的异常,你也能通过这个异常链追踪到异常最初发生的位置。
- public calSal throws SalException
- {
- try
- {
- //实现结算工资的业务逻辑
- ...
- }
- catch(SQLException sqle)
- {
- //把原始异常记录下来,留给管理员
- ...
- //下面异常中的message就是向用户的提示
- throw new SalException(sqle);
- }
- catch(Exception e)
- {
- //把原始异常记录下来,留给管理员
- ...
- //下面异常中的message就是向用户的提示
- throw new SalException(e);
- }
- }
- //创建下面的SalException业务异常类后,就可以用它来封装原始异常,从而实现对异常的链式处理。
- class SalException extends Exception
- {
- public SalException(){}
- public SalException(String msg)
- {
- super(msg);
- }
- //创建一个可以接受Throwable参数的构造器 Throwable 是所有Exception和Error的父类
- public SalException(Throwable t)
- {
- super(t);
- }
- }
转载于:https://blog.51cto.com/chengxuyuan/1029943