2017-12-29 65 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); 
    }   
} 

は今、機能しません。

catch(SQLException e) 

インターフェース「サービス」が次のように定義されます

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; 
} 

私は明確ではありません何かが、私が何をしなければならないか....がありますか?

+0

具体的には、「機能しません」という意味になります。あなたは何を期待していますか?何が起こるのですか? – MrSmith42

+2

その新しいcatch節をどの行に追加しますか?結果のコードを表示してください。また、これは「機能しない」という意味ですか?何かエラーがありますか、またはあなたは、あるコード(どの行?)によってSQLExceptionがスローされていることを知っていますが、catch節によって捕まえられません。はいの場合、例外は何ですか?スタックトレースを表示できますか? –

+4

'SQLException'は' SQLExcpetion'が**前** 'Exception'の' catch'ブロックをスタンドしなければならないのゆえ 'catch'ブロック' Exception'、から延びています。 – Turing85

答えて

0

SQLExceptionExceptionに拡張されているため、SQLExceptionは常にcatch(Exception e)節で検出されます。

これを修正するには、あなたがcatch(Exception e)コードの前に、あなたの新しいcatch(SQLException e)コードを配置してください。

関連する問題