【Java】コンパイルエラー「例外 Exception は XXX.xxx() にある throws 節と矛盾する」が表示される

はじめに

 * 分かってしまえば、大したことなかったのだが、以下「エラー内容」のようなコンパイルエラーになり
  ビルドできない
 * Eclipseの機能を使っても解決できず。

エラー内容

【日本語】
例外 Exception は XXX.xxx() にある throws 節と矛盾する

【英語】
Exception Exception is not compatible with throws clause in XXX.xxx()

プログラム

AbstractClass.java

public abstract class AbstractClass extends Thread implements IAbstractClass {
   public abstract void methodA() throws SampleException;
   
   @Override
   public void run() {
      try {
         this.methodA();
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

ChildClass.java

* 「public void methodA() throws SampleException {」でエラーになる。
public class ChildClass extends AbstractClass implements IChildClass {

   // ★ここでエラー★
   @Override
   public void methodA() throws SampleException {
      throw new SampleException();
   }
}

IChildClass.java

public interface IChildClass {
   void methodA();
}

SampleException.java

public class SampleException extends Exception {
   private static final long serialVersionUID = 1L;

}

解決方法

 * 上記のサンプルプログラムでいうと、親クラス「AbstractClass」の「methodA()」だけでなく、
  インターフェース「IChildClass」の「methodA()」にも「 throws SampleException」を追加する

# そもそも、こんな作りがよくないってのは置いといて。

修正例

IChildClass.java

public interface IChildClass {
   void methodA() throws SampleException;
}