When a method creates an instance of an anonymous inner class, it must catch or declare any exceptions throwable by the inner class's constructor. GCJ gives an error about this even though the method *does* handle or declare it: (Will attach test cases...) $ gcj -c FailThrow.java FailThrow.java: In class 'FailThrow$1': FailThrow.java: In constructor '(FailThrow)': FailThrow.java:6: error: Exception ‘java.lang.Exception’ must be caught, or it must be declared in the ‘throws’ clause of ‘FailThrow$1’. InnerBase obj = new InnerBase() {}; ^ 1 error Creating an instance of the base class, with the same constructor, works fine. GCC built from CVS HEAD: gcj-4.0 (GCC) 4.1.0 20050415 (experimental) ./configure --prefix=/usr/local/gcj --program-suffix=-4.0 --enable-languages=c,c++,java Running on Ubuntu Linux (Hoary Hedgehog). -- Summary: Anonymous inner class constructor's exceptions can't be caught or thrown Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: brion at pobox dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21045