不能抛出数据类型为 DataAccessException 的异常;异常类型必须是 Throwable 的子类



我的源代码如下所示。它有一个错误,"不能引发数据类型为 DataAccessException 的异常;异常类型必须是 Throwable 的子类"。

我不明白为什么会出现错误。让我知道。感谢。

package com.sds.afi.cosmos.cmm.db.impl;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;
import com.sds.afi.cosmos.cmm.db.MainDao;
@Repository
//@SuppressWarnings("unchecked")   // 부적절한 컴파일러의 경고를 제거
public class MainDaoImpl extends SqlMapClientDaoSupport  implements MainDao {
    @Autowired
    private SqlMapClientTemplate sqlMapClientTemplate;
    @SuppressWarnings("unchecked")
    @Override
    public List<HashMap> getUserInfo() throws DataAccessException {
        List<HashMap> lists;
        lists = sqlMapClientTemplate.queryForList("common.getList");
        return lists;
    }
}

如果异常的类型层次结构中的某个类不在类路径上,则可能会发生这种情况。在这种情况下,无法验证异常是否真的扩展了 Throwable,是否是已检查的异常等。因此错误。例如,Dataaccessexception的超类:NestedRuntimeException可能从类路径中丢失,因为它在不同的jar中,即spring-core。

你的 DataAccessException 不是 Throwable 类的子类(扩展 Throwable)。应该是,如果没有这种继承,您的代码将无法使用当前的 throws 子句进行编译。

下面是一个例子:http://www.osix.net/modules/article/?id=754<</p>

div class="one_answers">

当我升级到 5.X.X 版本时,我遇到了同样的问题。我已经添加了 Spring-core.jar 文件,它对我来说效果很好。只是在这里添加这个,因为它可能会帮助一些人。春天的txn罐子,道罐子和弹簧芯是必须的。

这意味着在您的 getUserInfo() 方法中没有引发该异常的代码。因此,只需从方法声明中删除 throws 子句即可。

我遇到了同样的问题。我做错的是我创建了自己的异常类(错误)。在其他程序中,我试图扩展异常类(默认),但编译器(eclipse)正在加载用户定义的异常类,给我同样的错误。因此,请确保您没有覆盖任何默认类。

最新更新