1
私はいくつかのモジュールを含むプロジェクトに取り組んでいます。私は、すべてのモジュールで内部構造を静的に生成するカスタム例外を持つ能力を提供したいと考えています。カスタムerror_code-error_messageペアを持つプロパティファイルからのHashMap。 は、私は、静的プロパティが含まれているものをベース抽象カスタム例外があります。Javaの継承と静的メンバー
public abstract class AbstractException extends RuntimeException{
public static Map<String, String> ERRORS = new HashMap<String, String>();
public String code;
// getters and setter for code ommited
public static init(String fileName, Class<?> clazz){
// read properties file
// populate map
}
public static String getMessageByCode(String code){
//
String mess = ERRORS.get(code);
// in case of null message provide default message about unknown error
}
public AbstractException(String code){
super(getMessageByCode(code));
this.setCode(code);
}
public AbstractException(Throwable thr){
super(getMessageByCode("ERROR_999"), thr);
this.setCode(code);
}
public AbstractException(Throwable thr, String msg){
super(getMessageByCode("ERROR_999") + " " + msg, thr);
this.setCode(code);
}
}
シンプルなカスタム例外
public class MyException extends AbstractException{
static{
// populate internal map with module-specific errors
init("module1.errors.properties", MyException.class);
}
public MyException(String code){
super(getMessageByCode());
}
// rest code omited
}
コードでカスタム例外の
簡単な使い方:
throw new MyException("ERROR_404");
Propblems何私ができますこのコードを参照してください:
- 抽象例外のすべての子クラスに対してエラーマップが存在する
- 静的エラーフィールドへの同時アクセス。
質問は、これらの問題を回避する方法は、誰かが私の問題のより良い解決策を持っている可能性がありますか?
モジュール間でエラーメッセージを共有したいですか? –
静的エラーへの同時アクセスでは、どのような問題がありますか?それらの静的メンバーのための読み書きはダーティーではありませんか? –
代わりに 'java.util.logging'を使うべきでしょう。あなたは本当にそれらのエラーを記憶しておく必要がありますか? – toto2