私はあなたがProperties.load()
のようなものを使用してファイルを読んでいるとします は、ここでは、このような状況を証明する一例です。それはput(key, value)
を使用してパラメータを内部的に設定します。そのメソッドをオーバーライドして、たとえば次のような目的の動作を得ることができます。
new Properties() {
@Override
public synchronized Object put(Object key, Object value) {
if (get(key) != null) {
throw new IllegalArgumentException(key + " already present.");
}
return super.put(key, value);
}
}.load(...);
EDIT:
はOPのコードにこれを統合:
File propertiesFile = new File("D:/media/myProperties.properties");
Properties properties = new Properties() {
@Override
public synchronized Object put(Object key, Object value) {
if (get(key) != null) {
// or some other RuntimeException you like better...
throw new IllegalArgumentException(key + " already present.");
}
return super.put(key, value);
}
}
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(propertiesFile))) {
properties.load(bis);
} catch (IllegalArgumentException ex) {
//
}
ところで、なぜあなたは、例外をキャッチしたいですか?私はその設定が壊れている(おそらくイベントを記録するトップレベルにキャッチしている)場合は、プログラムを続行しないだろう。しかし、例外処理は、別のトピックです...
(EDIT:私の元のコードのsamlesが、私はそれらを修正し、コンパイルできませんでした)
[例外クラスの作成](https://docs.oracle.com/javase/tutorial/essential/exceptions/creating.html)を試してください – user2023608
ファイルをどのように解析していますか? – shmosel
私はあなたの質問が何であるか完全にはわかりません。新しい例外を作成する方法はありますか?それはどのように重複のプロパティファイルをチェックするか?それはあなたの質問がはるかに広いです。 –