I encountered the following method, which to my surprise compiled just fine:
private String getControlMessageBlocking() throws ProtocolException,
        InterruptedException, IOException {
    try {
        // <Code that may throw any of the three listed exceptions>
        return controlMessage;
    } catch (Exception e) {
        throw e;
    }
}
Why isn't it necessary for the Exception to be caught?
 
    