2015-07-24 23 views
9

Exception sınıfını genişleten özel taban istisnası oluşturdum. Daha sonra başka bir zamana göre MyBaseException sınıfını genişletiyorum - bu kez özel durum istisnası sınıfı. Ve şimdi SonarQube ile ilgili bir sorunum var - "" İstisna "gibi adlandırılan sınıflar" Özel Durum "veya bir alt sınıf" kuralını genişletmelidir. Sınıf bildirimleri benziyor:Özel istisna yanlış devralma

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

Sorun bu SpecException ile sadece. SonarQube, ilk mirasla ilgili herhangi bir sorun görmüyor. SonarQube tarafından verilen ipucu şöyledir: "" Exception "u kaldırmak veya onun mirasını düzeltmek için bu sınıfı yeniden adlandırın." Ancak, Exception alt sınıfı tarafından miras aldığım için mirasın doğru olduğunu düşünüyorum.

+0

MyBaseException Özel Durumunu Uzatıyor mu? Bundan şikayetçi gibi geliyor. – pvg

+0

Evet, özel durumu genişletir. Bu sınıf sonar tarafından geçerlidir. Sorun SpecException ile. – jester2580

+0

Evet, sorunu sergileyen asgari bir örnek olmadan söylemek gerçekten mümkün değil. – pvg

cevap

2

Bu bağlantıda birisi Sonar 6.0'ın bu sorunu düzelttiğini söylüyor: https://groups.google.com/forum/#!topic/sonarqube/iXxKGIYRZ1g.

Sonar v6.0'ın çıkışını fark ettim, sorun, yeni sürümle test edildikten sonra gider. Zaman ayırdığın için teşekkürler Michael.

Bu, Sonar'ın önceki sürümlerinde bir hata gibi görünüyor. Java'daki tüm istisna sınıflarının "İstisna" ile biten bir sözleşmeyle adlandırıldığı ve üst düzey istisnasının Exception sınıfını uzattığı anda kodunuzun doğru görünmesi için birden fazla seviyeye sahip olabileceği iyi bilinir.