可以,将操作XML的异常使用DataAccessException封装一下例如
自定义异常:
public class MyUncheckException extends DataAccessException {
    public MyUncheckException(String msg) {
        super(msg);
    }
}操作XML类
try {
    ......
}
catch(读取XML的异常) {
    throw new MyUncheckException(e.toString);
}spring配置文件:
<prop key="...">PROPAGATION_REQUIRED,-MyUncheckException</prop>

解决方案 »

  1.   

    TO: myth822(↑八月的吟游者↑) 
    那也应该可以直接抛出DataAccessException吗? 如下面的:
    操作XML类
    try {
        ......
    }
    catch(读取XML的异常) {
        throw new DataAccessException(e.toString);
    }
    还有一点就是不明白,既然 MyUncheckException 继承 DataAccessException ,为什么还要在spring中声明<prop key="...">PROPAGATION_REQUIRED,-MyUncheckException</prop>
    加上 -MyUncheckException . 如果直接抛出DataAccessException,那是否声明这样就行了:<prop key="...">PROPAGATION_REQUIRED</prop>
      

  2.   

    可以直接抛出DataAccessException,
    <prop key="...">PROPAGATION_REQUIRED</prop>自己写一个可能是需要对所抛出的异常进行特殊的处理,可以直接继承RuntimeException
      

  3.   

    使用jta事务代理类,好象简单些!
      

  4.   

    这取决于你如何写数据到xml中,如果是通过一个支持事务的资源管理器那没问题,如果只是普通IO操作是不可能具有事务性的。抛出异常只能保证文件读写错误时数据库操可以能回滚,但是,如果文件读写结束以后,数据库出现异常怎么办,写入文件的数据怎么会滚呢?
      

  5.   

    呵呵,回 daquan198163(PowerStone) ( ) 信誉:95 把xml处理放在最后应该就可以了吧,先执行数据库操作。楼主应该也是这个意思吧,楼上各位的观点无疑是对的。
      

  6.   

    OK,在你自己的方法里,你可以把xml处理放在最后,但是你怎么保证这是整个链的最后一环,如果别人调用了你,然后又操纵数据库呢?我想大家在这里讨论的应该是“同时对数据库和XML操作”的通用解决方案,而不是权宜之计!