Monday, May 19, 2008

Java: swallowing exceptions

This is an example of code that can get us in trouble. We will never know that something went wrong...

public void uploadImportFile(FileContents fileContents, String fileName, String uploadlocation)
{
OutputStream outFile = null;
try
{
File file = new File(uploadlocation);
file.mkdirs();
outFile = new FileOutputStream(uploadlocation + fileName);
outFile.write(fileContents.getFileContents(), 0, fileContents.getFileContents().length - 2);
outFile.close();
}
catch (FileNotFoundException fileNotFoundException)
{ }
catch (IOException ioException)
{ }
}

1. In the least use:
System.err.println("FileNotFoundException e: " + e.getMessage());

e.printStackTrace();


But even better the method should not be void, but return the status.


2. Do not wrap the whole method in try{} with generic exceptions
3. Have a good reason to "push-up" the exception by adding it by the method name "throws ..."