Ho questo problema chiamato da PMD (analizzatore di codice statico) più spesso che vorrei, e vorrei sapere come qualcuno con più esperienza di me lo scriverebbe. Il mio codice è funzionale ma lo trovo inelegante, quindi voglio sapere come altri programmatori scriverebbero questo pezzo.
Il caso è, in una petizione di rete / I da cui posso o non posso ottenere un risultato, ma il mio metodo genitore non è a prova di nulla, quindi devo sempre restituire qualcosa. Inoltre, non mi piacciono molti ritorni su un metodo.
public String getBingLocation(Coordinate... data)
{
String response = "Not Retrieved";
final Coordinate location = data[0];
JSONObject locationData;
try {
locationData = NetworkManager.getJSONResult(ApiFormatter
.generateBingMapsReverseGeocodingURL(location.Latitude, location.Longitude));
if (null != locationData) {
final String address = this.getAddressFromJSONObject(locationData);
response = address;
}
} catch (final ClientProtocolException e) {
LoggerFactory.consoleLogger().printStackTrace(e);
return response;
} catch (final JSONException e) {
LoggerFactory.consoleLogger().printStackTrace(e);
return response;
} catch (final IOException e) {
LoggerFactory.consoleLogger().printStackTrace(e);
return response;
} finally {
location.Street = response;
}
return response;
}
Altro esempio:
public static Object loadObject(final String fileName, final Context context) {
Object object = null;
try {
ObjectInputStream objectInputStream = null;
try {
final FileInputStream fileStream = context.openFileInput(fileName);
objectInputStream = new ObjectInputStream(fileStream);
object = objectInputStream.readObject();
} catch (final ClassNotFoundException catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
} catch (final ClassCastException catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
} catch (final Exception catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
} finally {
if (objectInputStream != null) {
objectInputStream.close();
}
}
} catch (final IOException catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
}
return object;
}