2012-11-09 1 views
0

내가 LoadDaoHbm.java라는 클래스가있는 내 방법 내 컨트롤러 캐치 최대 절전 방법에 excception

@Override 
@Transactional(propagation = Propagation.MANDATORY) 
public int getPackageCount(Load load) { 
    Session s = getSessionFactory().getCurrentSession(); 
    Query q = s.createQuery("select count(distinct p.trackingNumber) from BasePiece p where p.load = :load"); 
    q.setEntity("load", load); 
    Long count = (Long) q.uniqueResult(); 
    return count.intValue(); 
} 

내가 계산

int pkgCount = loadDao.getPackageCount(load); 

내가 얻을 얻기 위해이 메서드를 호출하고있다가 내 컨트롤러의이 지점에서 메서드로 이동하여 데이터를 가져옵니다. 그러나 때로는 독특한 결과를 얻지 못할 수도 있습니다. 더 많은 결과가있을 때 그것은 나에게 예외를 준다. 이 예외를 어떻게 잡아서 오류로 보여줄 수 있습니까?

제안 해 주셔서 감사합니다. 미리 감사드립니다!

+0

코드를 try/catch로 감싸는 것이 무엇을 요구하고 있습니까? – kosa

답변

0

한 가지 방법은 컨트롤러에 고유 제한 조건 위반 던져에만 예외를 잡을주의

int pkgCount = -1 
try { 
    pkgCount = loadDao.getPackageCount(load); 
} catch (SpecificUniqueException) { 
    // route to your error page for this error 
} 

을 할 수 있습니다. 그렇지 않으면 다른 오류를 삼킬 수도 있습니다.

앱에 오류 조건이 아닌 경우 다른 조건을 적용할지 여부를 결정하고 예외를 사용하지 않는 다른 DAO 방법을 작성하는 것이 좋습니다. 예외는 예외적 인 시나리오입니다.

+0

고유하지 않은 경우 사용자가 할 수 없다는 메시지를 표시해야합니다. –

0
try { 

int pkgCount = loadDao.getPackageCount(load); 
} 
catch (Name_of_the_exception ex) { 
// put code that handles the exception here 
.... 
} 

오류 로그에서 예외 이름을 찾아서 catch 블록에 넣습니다.

+0

특정 예외를 사용해야합니까, 아니면 일반적인 예외가 적용될 수 있습니까? –