2015-07-24 10 views
9

Ho creato un'eccezione di base personalizzata che estende la classe Exception. Più avanti sto estendendo la classe MyBaseException da un'altra - questa classe di eccezione specyfic questa volta. E ora ho un problema con uno dei SonarQube - essere specioso con "Classi chiamate come" Eccezione "dovrebbero estendere la regola" Eccezione "o sottoclasse". dichiarazioni di classe sembra che:Eredità errata eccezione personalizzata

import org.apache.log4j.Logger; 
import org.springframework.http.HttpStatus;  
public class MyBaseException extends Exception { 
    public MyBaseException(int code, String message) { 
     super(message); 
     this.code = code; 
     LOGGER.error("Exception with HttpStatus code: " + code + " Msg: " 
      + message); 
    } 

    public MyBaseException(HttpStatus code, String message) { 
     this(code.value(), message); 
    } 

    public int getCode() { 
     return code; 
    } 
} 

import org.springframework.http.HttpStatus; 
public class SpecException extends MyBaseException { 
    public SpecException (HttpStatus code, String message) { 
     super(code, message); 
    } 

    public SpecException (int code, String message) { 
     super(code, message); 
    } 
} 

Il problema è solo con questo SpecException. SonarQube non vede alcun problema con la prima ereditarietà. Suggerimento dato da SonarQube è: "Rinomina questa classe per rimuovere" Eccezione "o correggerne l'ereditarietà" ma penso che l'ereditarietà sia corretta poiché sto ereditando dalla sottoclasse di Exception.

+0

MyBaseException estende l'eccezione? Sembra che si stia lamentando di questo. – pvg

+0

Sì, estende l'eccezione. Questa classe è valida per sonar. Il problema è con SpecException. – jester2580

+0

Sì, non è davvero possibile dire senza un esempio minimo effettivo che mostra il problema. – pvg

risposta

2

A questo collegamento qualcuno dice che Sonar 6.0 corregge questo problema: https://groups.google.com/forum/#!topic/sonarqube/iXxKGIYRZ1g.

ho appena realizzato Sonar v6.0 è fuori, il problema è scomparso dopo che ho provato con la nuova versione. Grazie Michael per il tuo tempo.

Sembra che si sia verificato un errore nelle versioni precedenti di Sonar. È noto che tutte le classi di eccezioni in Java sono denominate per convenzione che termina con "Eccezione" e che possono avere più livelli, pertanto il codice sembra corretto non appena l'eccezione di livello superiore estende la classe Exception.