Sure. But the bubbling of checked exceptions adds a lot of "foo() throws DeepUnderlyingException", all the way up to your single catch.
And the worst part is when reading the code in such a situation, it can get very tricky to figure out exactly where the exception is thrown.
There's a reason that the JVM ecosystem has largely moved away from checked exceptions.