jdbc的异常是checked exception,
需要强制try,catch,
但因为jdbc的异常有的是无法预知的,即使捕获也没用,比如sql语句写错了,
所以Hibernate把jdbc的异常捕获了,
再转换成unchecked exception抛出,
这样用户可以捕获也可以不捕获.
代码量少了,而且不用再专注繁琐的异常操作!
需要强制try,catch,
但因为jdbc的异常有的是无法预知的,即使捕获也没用,比如sql语句写错了,
所以Hibernate把jdbc的异常捕获了,
再转换成unchecked exception抛出,
这样用户可以捕获也可以不捕获.
代码量少了,而且不用再专注繁琐的异常操作!
这样做的好处是设计者不必去显示的处理底层的异常, 因为有些些异常你即使显示的捕捉了也没有办法补救, 比如jdbc连接失败会有SQLException, 但是你捕捉这个异常之后, 也只能简单的把它再次往上抛. 或者干脆什么也不处理. 那既然这样还不如搞个统一的unchecked 异常, 还免得我们写繁琐的try catch.
DataAccessException中包含有出错代码, 可供程序参考.