Mybatis自定义异常

·  阅读 1020

实现目的

提供自定义异常以及异常工厂类

源码package

src/main/java/org/apache/ibatis/exceptions

自定义异常实现

实现比较简单,直接继承RuntimeException

自定义异常

异常工厂类

使用工厂模式,将普通异常包装成Mybatis自定义异常

public class ExceptionFactory {

  private ExceptionFactory() {
    // Prevent Instantiation
  }

  /**
   * 把普通异常包装成mybatis自定义的PersistenceException
   *
   * @param message message
   * @param e       e
   * @return 自定义异常
   */
  public static RuntimeException wrapException(String message, Exception e) {
    // 查找错误上下文,得到错误信息和根因,传给PersistenceException
    // ErrorContext是线程间隔离的. 而.message(message).cause则是典型的构建器模式
    return new PersistenceException(ErrorContext.instance().message(message).cause(e).toString(), e);
  }
}
复制代码

UT

org.apache.ibatis.exceptions.GeneralExceptionsTest 从该类中可以看出,Mybatis为每种不同的异常场景,都定义一个PersistentceException的子类。 而且这些自定义的异常类,并没有统一放在exception package中,而是分别放在各自功能模块的package中,这种处理方法可以借鉴一下。 毕竟笔者都是习惯统一放在一个package中

Mybatis不同场景的异常处理类

扩展阅读

Java自定义异常处理——最佳实践[译]

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改