An instance initializer of a named class may not throw a checked exception unless that exception or one of its superclasses is explicitly declared in the throws clause of each constructor of its class and the class has at least one explicitly declared constructor. An instance initializer in an anonymous class (�15.9.5) can throw any exceptions.
According to the statement the following code should compile, but it is not compiling.
You are right. The code should compile according to JSL. This a point where the compiler doesn't conform to the JLS. There is a bug report in Sun's database, and I think, it has been also commented here in the Ranch.