That's rather oversimplifying matters. In particular, its just not true that the pro checked exception camp can "write exactly the same code as now". Writing code is an act. It involves more than hitting keys on a keyboard. You look at a screen. Your editor tells you things. One of the things that'll be changing is that your editor is no longer telling you that you forgot to handle a checked exception.
I _DONT_ like checked exceptions all that much and I'll say right now that removing them wholesale from java is a very painful idea. Whenever I write code calling a method that reports expectable errors via checked exceptions (FileNotFoundException for example), even if I remember the exact type of that exception, I'll just write the line, wait for the error, and then quickfix the error. I'm so used to this that my muscle memory is going to have a lot of trouble adjusting to a world where this does not happen. In the spirit of your argument, what can we pragmatically do for java given the need to maintain backwards compatibility? The pipe dreams painted by Kevin Wright and other functional fans of basically rewriting APIs to return Eithers or CPS or other paradigms is obviously not a solution (to be fair to them, that wasn't the discussion then). I only see 2 workable options: (A) Define that henceforth all exceptions are to be unchecked. This is backwards compatible, in that all code that compiles today will compile tomorrow and do the same thing. But, as I said above, this isn't all that compatible with muscle memory and existing library designs. (B) Give an option to officially 'ignore' an exception, meaning you can throw / fail to handle a checked exception without declaring that you 'throw' it. This change would go along with the ability to catch a checked exception even if no statement in the try block appears to throw it, generating just a (suppressable) warning, instead of java6's current behaviour where this is an error. For example: public String readWordList() ignores IOException { InputStream in = MyClass.class.getResourceAsStream("wordlist.txt"); ...... } The above example is rather poignant, too, as such code will throw an IOException exactly as likely as a ClassNotFoundError, which is so far to the 'unexpectable and unhandleable' side of the chart that it's not even a RuntimeException, it's an Error. Is there a serious problem here for those who consider the checked exception experiment a total failure? I already know from espousing this view elsewhere that checked exception purists don't feel this is pure enough. Pointing out that you can effectively ignore exceptions already with some fancy generics abuse, or interop with _ANY_ non-java language on the JVM, does not appear to help. But what about those who don't want checked exceptions at all? Would this be a fair compromise? -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to javaposse@googlegroups.com. To unsubscribe from this group, send email to javaposse+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.