## Why is this an issue?

A `catch` clause that only rethrows the caught exception has the same effect as omitting the `catch` altogether and letting it bubble up automatically.

    public String readFile(File f) throws IOException {
      String content;
      try {
        content = readFromDisk(f);
      } catch (IOException e) {
        throw e;
      }
      return content;
    }

Such clauses should either be removed or populated with the appropriate logic.

    public String readFile(File f) throws IOException {
      return readFromDisk(f);
    }

or

    public String readFile(File f) throws IOException {
      String content;
      try {
        content = readFromDisk(f);
      } catch (IOException e) {
        logger.LogError(e);
        throw e;
      }
      return content;
    }

In the case of try-with-resources, the try should remain even without a catch clause, to keep the resource management

    String readFirstLine(FileReader fileReader) throws IOException {
      try (BufferedReader br = new BufferedReader(fileReader)) {
         return br.readLine();
      } catch (IOException e) { // Noncompliant
      throw e;
    }

becomes

    String readFirstLine(FileReader fileReader) throws IOException {
      try (BufferedReader br = new BufferedReader(fileReader)) {
         return br.readLine();
      }
    }