The uncaught exception handler, presumably. Which just does a printStackTrace() and then the
thread terminates. Same as happens now for any uncaught RuntimeException or Error.
Leonardo: how would throws Exception be a
default? That is, if you wanted to override this default so that main()
didn't throw Exception, how would you represent it? Normally we achieve this by not writing "throws Exception". But if that were taken to mean something else, what do we write in its place? "throws no Exception?
Also, what's special about main()? Why not apply this idea to
all methods? In which case, why have checked exceptions at all? In fact, there are a number of people who prefer not using checked exceptions, and avoid them where possible. See
here for a nice overview of the issues, and some more recent thoughts from the same author
here. I think there's something to be said for the idea of getting rid of checked exceptions entirely. But I don't see any reason to give the main() method special treatment here. If we want to remove the problems with checked exceptions, better to remove them from
all methods, I think. Or not at all. We don't need a special rule just for main().
Regardless, I think it's very unlikely anything in the
Java language will change here. These thoughts may influence future languages. And they've certainly influenced some libraries and frameworks. E.g. Spring uses unchecked exceptions extensively in places most conventional Java programmers would use checked exceptions.