Не исключено исключение типа 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) загружал пользовательский класс исключений, дающий мне такую же ошибку.
Поэтому, пожалуйста, убедитесь, что вы не переопределяете любой класс по умолчанию.