> try (BufferedReader reader = new BufferedReader (new FileReader (filePath) )){ won't FileReader leak if the BufferedReader constructor throws?
Edit: Disregard the above, it was too naive.
It cannot leak because of a stronger warranty. In the JLS, it is specified that the try-with-resources track successfull initialisation of AutoClosable resources, not successful assignation. So one try with resources can desugar into the logical equivalent of multiple nested try-catch-finally !