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?