2012-04-30 9 views
10

私のソースコードは以下のようになります。 「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; 
    } 

} 

答えて

0

これは、あなたのgetUserInfo()メソッドでは、その例外をスローするコードがないことを意味します。したがって、メソッド宣言からthrows句を削除するだけです。

+0

私はそれを取り除く場合、別のエラー "未処理の例外型DataAccessException"が発生しました。 – verystrongjoe

+0

それから、try〜catchステートメントでラップしました。 「DataAccessException型の例外はスローされず、例外型はThrowableのサブクラスでなければなりません」という別のエラーが発生します。 – verystrongjoe

+0

私は他の答えはおそらくあなたが探しているものだと思う、あなたのDataAccessExceptionが呼び出されたメソッドのように呼び出されたメソッドで同じものであることを確認してください。 –

2

あなたのDataAccessExceptionは、Throwableクラスのサブクラスではありません(Throwableを継承します)。それは、この継承がなければ、あなたのコードは現在のthrows節でコンパイルできません。ここで

は一例です:例外の型階層内のいくつかのクラスがクラスパス上にない場合http://www.osix.net/modules/article/?id=754

+0

Throwableを拡張するクラスとサブクラスのサブクラスの違いは分かりません。そしてそのエラーが発生する例外がThrowableのサブクラスでない場合、どうすればこの問題を処理できますか? – verystrongjoe

+0

DataAccessExceptionのスーパークラスを追跡しました。また、Java.lang.Excpetionも拡張されています。 – verystrongjoe

+1

それは奇妙です。このスレッド(最初の答え)によると:http://stackoverflow.com/questions/2416980/configurationexception-in-java、クラスパスからスーパークラスが見つからない場合は、この例外が発生する可能性があります。 –

20

は、これが発生する可能性があります。その場合、例外が本当にThrowableを拡張するかどうか、それがチェックされているかどうかなどを検証することは不可能です。したがって、エラーです。例:Dataaccessexceptionのスーパークラス:NestedRuntimeExceptionは、別のジャー、すなわちspring-coreにあるように、クラスパスから欠落している可能性があります。

0

私は同じ問題に直面していました。 私が間違っていたことは、私自身の例外クラス(誤って)を作成したことでした。 他のプログラムでExceptionクラス(デフォルト)を拡張しようとしましたが、complier(eclipse)がユーザー定義のExceptionクラスを読み込んで同じエラーを表示していました。 したがって、デフォルトクラスをオーバーライドしていないことを確認してください。

関連する問題