We would probably normally do a

throw Throwables.propagateIfPossible(e, IOException.class);

The thinking being that "throws Exception" is equivalently useful as just throwing out a RuntimeException.  The IfPossible will try to throw it as an IOException if it can and if it cannot, it will wrap a RuntimeException around it.