ある種のビジネス データを JSON 文字列にエンコードするコードがあります。
public String encodeDataAsJsonString(Data data) throws JSONException {
JSONObject o = new JSONObject();
o.put("SomeField1", data.getSomeProperty1());
o.put("SomeField2", data.getSomeProperty2());
...
return o;
}
問題は次のとおりです。
- JSONException はチェック例外ですが、
- コンパイル時にそれを処理する方法がよくわかりません。JSONException が実際に発生した場合、それはおそらくコードのバグであり、既にそこにあり(例: this )、必要なすべてのログ記録とクリーンアップを既に実行している通常の「キャッチされていないグローバル例外ハンドラー」によって処理する必要があります。
したがって、呼び出し元のメソッドでこれを行うことになりました。
...
try {
encoded = encodeDataAsJsonString(data);
} catch (JSONException e) {
throw new RuntimeException(e);
}
...
コールスタックのすべてthrows JSONException
のメソッドに aを追加するよりも、害が少ないように思えました。しかし、それはまだ汚れているので、私の質問は次のとおりです。
特定のチェック済み例外を「通常の未チェック例外ルート」に送りたい場合、それを RuntimeException として再スローするのが正しいイディオムですか?