jdbc的异常是checked exception,
需要强制try,catch,
但因为jdbc的异常有的是无法预知的,即使捕获也没用,比如sql语句写错了,
所以Hibernate把jdbc的异常捕获了,
再转换成unchecked exception抛出,
这样用户可以捕获也可以不捕获.
代码量少了,而且不用再专注繁琐的异常操作!

解决方案 »

  1.   

    hibernate 对所有的底层异常都做了良好的封装, 都是DataAccessException, 这是个unchecked exception;
    这样做的好处是设计者不必去显示的处理底层的异常, 因为有些些异常你即使显示的捕捉了也没有办法补救, 比如jdbc连接失败会有SQLException, 但是你捕捉这个异常之后, 也只能简单的把它再次往上抛. 或者干脆什么也不处理. 那既然这样还不如搞个统一的unchecked 异常, 还免得我们写繁琐的try catch.
    DataAccessException中包含有出错代码, 可供程序参考.