I agree Anton, these are the right guiding principles and the proof will be in running apps.
Regards, Tim Anton Avtamonov wrote: > On 2/20/06, Mikhail Loenko <[EMAIL PROTECTED]> wrote: >> Well seems like we all agree with the general approach. > > Yes. Agree. > >> But... >> >> :) >> >> I do not agree with the specific case you describe: NPE vs. IAE. >> >> I can imagine a programmer who does not read the spec, who >> does not want to check for null, who just makes 'catch NPE' somewhere > > Mikhail, I definitely can imagine the same story. I only want to have > such application first. Then we will be able to judge and decide what > to do. Before that no need to deviate from spec (of cource, excepting > the cases when spec itself contains bugs as in my example with > GrayFilter when required exception is missed from spec). > In your example, such 'professional' developer most likely catches > just Exception rather then the particular one :-) > >> And his app would work well on RI and fail with uncaught IAE on Harmony >> if we follow the spec. So, what is the reason in this very specific case >> to firmly follow the spec? > > Because NPE (IMHO) is not well-defined way to inform the developer > something is wrong with his/her code. It just shows 'something inside > implementation' fails (excluding cases when NPE contains proper > message and is thrown intentively). > In opposite, IAE always shows programmer called the method with wrong > input values. All is about better notation only. > In case existing program specified percentage outside the reasonable > range, for instance, and worked anyway it may be even better to > clearly inform the developer something is wrong with the program. > Because in reality there were no garantee that such incorrect code > worked properly on Sun's impl: just a play of chance. Of course we > should not add more exceptions than exist in code/spec (at least for > now), but try to use 'proper' exceptions with better notation clear > for the developers. > > I propose to continue this discussion when we have real examples, i.e. > real applications failed because of such differences or particular > methods which can potentially fail applications... Otherwise the > discussion is quite abstract... Just IMHO. > > -- > Anton Avtamonov, > Intel Middleware Products Division > -- Tim Ellison ([EMAIL PROTECTED]) IBM Java technology centre, UK.