Не исключено исключение типа 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;
    }

}

Ответ 1

Это может произойти, если какой-либо класс в иерархии типов исключения не находится на пути к классу. В этом случае невозможно проверить, действительно ли исключение распространяется на Throwable, независимо от того, является ли оно проверенным или нет и т.д. Следовательно, ошибки. например, суперкласс из Dataaccessexception: исключение NestedRuntimeException может отсутствовать в пути класса, так как оно находится в различной jar i.e. spring -core.

Ответ 2

Ваше DataAccessException не является подклассом класса Throwable (extends Throwable). Это должно быть, и без этого наследования ваш код не подлежит компиляции с предложением current throws.

Вот пример: http://www.osix.net/modules/article/?id=754

Ответ 3

Это означает, что в вашем методе getUserInfo() отсутствует код, который выдает это исключение. Поэтому просто удалите предложение throws из вашего объявления метода.

Ответ 4

У меня была такая же проблема. То, что я сделал неправильно, я создал класс исключения (по ошибке) моего собственного. В других программах я пытался расширить класс Exception (по умолчанию), но complier (eclipse) загружал пользовательский класс исключений, дающий мне такую ​​же ошибку. Поэтому, пожалуйста, убедитесь, что вы не переопределяете любой класс по умолчанию.