ファイルは java.nio.channels.SocketChannel.java です。JDK7u45。抜粋は次のとおりです。
public static SocketChannel open(SocketAddress remote)
throws IOException
{
SocketChannel sc = open();
try {
sc.connect(remote);
} catch (Throwable x) {
try {
sc.close();
} catch (Throwable suppressed) {
x.addSuppressed(suppressed);
}
throw x;
}
assert sc.isConnected();
return sc;
}
コンパイラはどのようにそのコードを渡しましたか? 署名はIOExceptionを宣言しますが、メソッドの本体はThrowableをキャッチしてそれを取り消します。何がわからないのですか?