Jakie problemy mogą wynikać z rzucania sprawdzonego wyjątku jako wyjątku RuntimeException?

Mam fragment kodu, który koduje dane biznesowe w łańcuchu JSON:

public String encodeDataAsJsonString(Data data) throws JSONException {
    JSONObject o = new JSONObject();
    o.put("SomeField1", data.getSomeProperty1());
    o.put("SomeField2", data.getSomeProperty2());
    ...
    return o;
}

Rzecz w tym:

JSONException jest sprawdzonym wyjątkiem, aleNaprawdę nie wiem, jak sobie z tym poradzić w czasie kompilacji. Jeśli naprawdę wystąpi wyjątek JSONException, prawdopodobnie jest to błąd w kodzie i powinien być obsługiwany przez zwykły „globalny program przechwytujący wyjątki”.który już tam jest (na przykład.to), i który już wykonuje wszystkie niezbędne logowanie i czyszczenie.

Tak więc skończyło się to na wywołaniu:

...
try {
    encoded = encodeDataAsJsonString(data);
} catch (JSONException e) {
    throw new RuntimeException(e);
}
...

Wydawało się to mniejszym złem niż dodaniethrows JSONException dokażdy metoda do góry stosu połączeń. Jednak nadal jest brudno, stąd moje pytanie:

Jeśli chcę, aby jakiś sprawdzony wyjątek poszedł „zwykłą niesprawdzoną trasą wyjątków”, czy ponowne użycie go jako wyjątku RuntimeException jest poprawnym idiomem do użycia?

questionAnswers(6)

yourAnswerToTheQuestion