A catch
clause that only rethrows the caught exception has the same effect as omitting the catch
altogether and letting
it bubble up automatically, but with more code and the additional detriment of leaving maintainers scratching their heads.
Such clauses should either be eliminated or populated with the appropriate logic.
Noncompliant Code Example
public String readFile(File f) {
StringBuilder sb = new StringBuilder();
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
//...
}
catch (IOException e) { // Noncompliant
throw e;
}
return sb.toString();
}
Compliant Solution
public String readFile(File f) {
StringBuilder sb = new StringBuilder();
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
//...
}
catch (IOException e) {
logger.LogError(e);
throw e;
}
return sb.toString();
}
or
public String readFile(File f) throws IOException {
StringBuilder sb = new StringBuilder();
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
//...
return sb.toString();
}