While that's nicer than a million catch statements for all the subclasses of exceptions, the whole "Exceptions fucking everyhere" part of java is one of the reasons I never feel like I'm having fun writing it. Like, I write fun things in it but writing the code is a constant source of furrowed brows and feeling mad. :/
I think exceptions are one of the better solution to a necessary evil. Programs will get runtime errors and you have to deal with it somehow. I know a few approaches, in falling order of explicitness:
1. Throw exceptions
2. Have multiple return values and return explicit error-values (possibly the best approach, as seen in Go)
3. Have special function that check for errors (database.isCorrupt())
4. Return error values in-band (often null or -1)
5. Let it crash as soon as something goes remotely wrong
6. Keep going with a corrupt data state, which may make the program crash at some point
Option 5 or 6 is often the most fun to write, that's how I usually write small programs that just have to work for me (like personal scripts). But for production-ready code you want to explicitly handle every bloody error, which is a huge chore but generally necessary.
Java wants you to write production-code so it forces you to be explicit about what you want to do with every error. But since Java has to be written in an IDE anyway, you can easily let the IDE convert option 1 to 5 for you. As soon as the IDE warns about an uncaught exception, just click the warning and choose to throw it. Keep throwing it upwards at every level. At the top-level you get something horrendous like this:
} catch (TransformerFactoryConfigurationError | TransformerException | SQLException | DaxploreException | SAXException | IOException | ParserConfigurationException e1) {
It takes almost no time to write, you just keep telling the IDE to ignore the exceptions. Once you are ready to turn the code into production-ready code, you just go back in and explicitly handle all the exceptions in a reasonable way.