2017-12-29 78 views
-2

나는이 방법으로 오류를 잡으려고하는데 모든 추적 오류를 내 기록에 쓰지 않으려한다. 지금이왜이 SQLException을 잡을 수 없습니까?

코드이 :이 추가하면

public void grabar() throws Exception { 
    System.out.print("hl"); 

    try { 
     if (condiva.getId() > 0) { 
      service.modificar(condiva); 
     } else { 
      service.registrar(condiva); 
     } 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Condicion IVA Grabada Correctamente !!!")); 
    } catch (Exception e) { 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "Ocurrio un Error al Grabar la Condición de IVA !!!")); 
     log.error("CondivaEditBean:",e) ; 
    } finally { 
     FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true); 
    }   
} 

지금, 작동하지 않습니다.

public interface IService<T> { 
    void registrar(T t) throws Exception; 
    void modificar(T t) throws Exception; 
    void eliminar(T t) throws Exception; 
    List<T> listar() throws Exception; 
} 

나는 분명이없는 뭔가가있다 .... 내가 무엇을해야

catch(SQLException e) 

인터페이스 "서비스" 는 다음과 같이 정의된다?

+0

'작동하지 않음'의 의미를 구체적으로 설명하십시오. 너는 무엇을 기대 하느냐? 무슨 일이야? – MrSmith42

+2

새 catch 절을 어느 라인에 추가합니까? 결과 코드를 보여주십시오. 또한 이것이 '기능하지 않는다'는 것을 의미합니까? 어떤 에러가 있습니까, 아니면 어떤 코드 (어떤 라인?)에 의해 SQLException이 던져 지지만 catch 절에 의해 잡히지는 않습니다. 그렇다면 예외는 무엇입니까? 스택 추적을 표시 할 수 있습니까? –

+4

'SQLException '은'Exception'에서 확장되므로'SQLExcpetion'의'catch' 블록은'Exception'의'catch' 블록 앞에 ** 서 있어야합니다. – Turing85

답변

0

SQLExceptionException으로 확장되기 때문에 SQLException은 항상 catch(Exception e) 절에 걸립니다.

이 문제를 해결하려면 catch(Exception e) 코드 앞에 새로운 catch(SQLException e) 코드를 넣어야합니다.