インターフェイスを使用して定数を処理すると、例外をスローする定義済みのメソッドを呼び出すことができません。この未処理例外が表示されるのはなぜですか?
public interface ParametresConstantes {
public static final String DB_CONNEXION = ChargementProjetProperties.getInstance().getValueByKey("conn");
//a red line under the right part of this instruction.
public static final int SIZE_TEXT_FIELD = 20;
}
public String getValueByKey (String key) throws Exception
{
String value = null;
load();
if (props.containsKey(key))
{
value = props.getProperty(key);
}
else
{
throw new Exception ("no key found");
}
return value;
}
どのように修正するのですか?
EDIT
以下に説明するように、静的ブロックは、インターフェイス上でそれを実装するクラスでは動作できないので、変数が最終であり、割り当てることができないので、私は一時的value=""
によってelse
ブロックに置き換えるとスローを取り除き、残りを守った。
正確なエラーとスタックトレースを提供してください。また、インターフェイスが例外をスローできるメソッドを呼び出しているが、インターフェイス内で何も処理していないと考えてください。 –
イニシャライザで例外をキャッチすることはできません。そのコードをメソッドまたは静的ブロックに移動します。 – m0skit0
それ以上の場合、チェックされた例外をスローしないでください。確かにそのメソッドから基底の例外もスローしないでください。代わりにチェックされていないIllegalArgumentExceptionをスローします。 –