Also throws() in Java ist ganz sicher nicht das Gegenteil von throw() in C++, der einzige Unterschied der mir jetzt auffällt ist der (du hast ihn schon genannt), dass man in C++ nicht gezwungen wird zu fangen (oder weiter zu werfen), in Java hingegen schon.
Die C++-Geschichte ist hier aber Java klar unterlegen, das throw() in C++ nicht vom Compiler durchgesetzt wird, was wirklich ein Nachteil ist (virtual sagt es ja schon).