Il semble que je sois toujours à la croisée des chemins lorsque je ne sais pas exactement comment traiter une exception sans la renvoyer à l'appelant.
Y a-t-il une meilleure façon de gérer la situation ci-dessous ?
private DataHandler retrieveFromGridFS(ObjectId id) throws IOException
{
GridFS gridFS = new GridFS(getDBReference());
GridFSDBFile out = gridFS.find(id);
File temp = File.createTempFile(
(String)out.getMetaData().get("productName"),
(String)out.getMetaData().get("productType"));
out.writeTo(temp);
return new DataHandler(new FileDataSource(temp));
}
Ce qui précède private
peut lancer un IOException
.
En utilisant cette méthode de la manière suivante :
public DataHandler retrieveProduct(String productId) throws IOException
{
ObjectId id = new ObjectId(productId);
DataHandler handler = null;
try
{
handler = retrieveFromGridFS(id);
}
catch(IOException ex)
{
logger.error(ex);
throw new IOException("A problem occurred retrieving product.");
}
return handler;
}
Je suis obligé de relancer pour ne pas risquer de retourner null.