博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis源码学习 - ExceptionContext
阅读量:5808 次
发布时间:2019-06-18

本文共 1218 字,大约阅读时间需要 4 分钟。

hot3.png

ExeceptionContext 顾名思义 就是 exception 的上下文。 用来保存当前线程执行的一些重要信息 。 内部使用ThreadLocal实现。 

当线程执行出现错误时,就可以将ThreadContext 保存的信息做成错误日志(ExceptionFactory)。

 

涉及的类 - ErrorContext ,  ExceptionFactory , SqlSessionFactoryBuilder , BaseExecutor  。 

public int update(MappedStatement ms, Object parameter) throws SQLException {

    ErrorContext.instance().resource(ms.getResource()).activity("executing an update").object(ms.getId());
    if (closed) throw new ExecutorException("Executor was closed.");
    clearLocalCache();
    return doUpdate(ms, parameter);
  }

 

public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {

    try {
      XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
      return build(parser.parse());
    } catch (Exception e) {
      throw ExceptionFactory.wrapException("Error building SqlSession.", e);
    } finally {
      ErrorContext.instance().reset();
      try {
        inputStream.close();
      } catch (IOException e) {
        // Intentionally ignore. Prefer previous error.
      }
    }
  }

 

public static RuntimeException wrapException(String message, Exception e) {

    return new PersistenceException(ErrorContext.instance().message(message).cause(e).toString(), e);
  }

转载于:https://my.oschina.net/yixinnemo/blog/1922080

你可能感兴趣的文章
git reset 三种用法总结
查看>>
hdfs笔记
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>