今天测试了下spring中配置的hibernate事物处理功能。在异常拦截方面有些收获,认为有必要分享给大家。
这里的异常拦截指的是当对配置了事物处理的方法进行了不合法操作(如:向数据库中插入两条id值相同的记录),spring的事物处理机制会在不合法操作执行后立即自动捕获该异常(以后不能再次通过try{}catch{}捕获该异常,因为该异常以被捕获),后面的程序会正常继续执行。
做到这里突然想到一个问题,也是try{}catch{}的最基本机制,如果一个异常被程序块内层try{}catch{}捕获后,外层还能不能捕获到该异常?
通过我的亲身事件证明,如果一个异常在内层被捕获了,就不能被外层再次捕获。换句话说,一个异常只能被捕获一次。