[解決済み] Javaでエラーコード/文字列を定義する最良の方法とは?
質問
私はJavaでWebサービスを書いています。 エラーコードとそれに関連するエラー文字列を定義するための最良の方法を見つけようとしています。 . 私は、数値のエラーコードと、一緒にグループ化されたエラー文字列を持つ必要があります。エラーコードとエラー文字列の両方は、ウェブサービスにアクセスするクライアントに送信されます。例えば、SQLExceptionが発生したとき、次のようにしたいと思います。
// Example: errorCode = 1,
// errorString = "There was a problem accessing the database."
throw new SomeWebServiceException(errorCode, errorString);
クライアントプログラムにメッセージが表示される場合があります。
エラー#1が発生しました。データベースへのアクセスに問題が発生しました。 データベースへのアクセスに問題が発生しました。
私が最初に考えたのは
Enum
をオーバーライドして
toString
メソッドをオーバーライドして、エラー文字列を返します。以下は、私が思いついたものです。
public enum Errors {
DATABASE {
@Override
public String toString() {
return "A database error has occured.";
}
},
DUPLICATE_USER {
@Override
public String toString() {
return "This user already exists.";
}
},
// more errors follow
}
質問です。 これを行うためのより良い方法はありますか?私は、外部ファイルから読み込むのではなく、コードで解決することを望んでいます。私はこのプロジェクトのために Javadoc を使用しています。そして、エラー コードをインラインで文書化し、それらを文書で自動的に更新できるようにすると便利です。
どのように解決するのですか?
まあ確かにenumソリューションのより良い実装があります(これは一般的に非常に素晴らしいものです)。
public enum Error {
DATABASE(0, "A database error has occurred."),
DUPLICATE_USER(1, "This user already exists.");
private final int code;
private final String description;
private Error(int code, String description) {
this.code = code;
this.description = description;
}
public String getDescription() {
return description;
}
public int getCode() {
return code;
}
@Override
public String toString() {
return code + ": " + description;
}
}
説明文を返すために toString() をオーバーライドしたいかもしれませんが、よくわかりません。とにかく、要点は、各エラーコードについて個別にオーバーライドする必要がないことです。また、序列の値を使用する代わりにコードを明示的に指定していることにも注意してください - これは後で順序を変更したり、エラーを追加/削除するのが簡単になります。
これはまったく国際化されていないことを忘れないでください - しかし、Webサービスクライアントがロケールの記述を送ってこない限り、とにかく簡単に自分自身で国際化することはできません。少なくとも、クライアント側で国際化のために使用するエラーコードを持つことになります...。
関連
-
javaの非静的メソッドを静的に参照することができない
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Javaで文字列を比較するには?
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み] JAX-RSとJerseyでRESTトークンベースの認証を実装する方法
-
[解決済み】文字列のenumを作成するための最良の方法?
-
[解決済み】JAX-RS - JSONとHTTPステータスコードを一緒に返すには?
-
[解決済み] 列挙型のコンボボックスで、列挙型の値に独自の文字列フォーマットを適用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
プロジェクトの依存関係を解決できない。
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
Jsoup-Crawlingの動作
-
SocketException java.netの4つの例外解決策。
-
ジャバアレイ
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
代入の左辺は変数でなければならない 解答
-
1分でわかる!恋人の写真をIDEAの背景画像に設定する方法【おすすめ集