Duplizieren habe ich diesen Code:Wie fangen vermeiden komplizierte Blöcke
try {
do_stuff();
return do_more_stuff();
} catch (UnsupportedEncodingException e) {
throw CustomException.programmer_error(e);
} catch (ProtocolException e) {
throw CustomException.programmer_error(e);
} catch (MalformedURLException e) {
throw CustomException.programmer_error(e);
} catch (SocketTimeoutException e) {
throw new CustomException(e);
} catch (IOException e) {
throw CustomException.unexpected_error(e);
}
ich jetzt all diese catch-Blöcke in einer anderen ähnlichen Funktion haben muß. Was ist der beste Weg, um Doppelarbeit zu vermeiden?
Beachten Sie, dass der Code in den beiden try-Blöcken nicht sehr ähnlich ist.
Auch ich kann nicht wirklich den Satz von Fängen höher setzen.
Hinweis, würde ich lieber vermeiden:
try {
do_stuff();
return do_more_stuff();
} catch (Exception e) {
handle_exception_via_rtti(e);
}
Warum möchten Sie die rtti Version vermeiden? – clamp
Da dpb sagt "Wenn Ihr Code gerade Exception abfängt, und do_stuff und do_more_stuff später zusätzliche checked Ausnahmen hinzufügen, werden Sie wahrscheinlich nie von der Änderung und der Tatsache wissen, dass Ihr Code jetzt falsch sein könnte." – mxcl
Persönlich würde ich Ihre Methode nur die ursprünglichen Ausnahmen werfen lassen. Sie tun nicht viel mit Ihren catch-Blöcken, um etwas zu "behandeln", außer das Umbrechen in einer CustomException. Welchen Wert hat dieses Hinzufügen? – duffymo