2006/5/12, Jimmy, Jing Lv <[EMAIL PROTECTED]>: > > Mikhail Fursov wrote:
>> I agree that the easiest way for us is to throw RI or subclass. > >+1. > >> >> Is it 'bad' practice to fix this "bug" (replace subclass with RI) on >user >> request and do not think about this problem today? >> > >In this case, though replace StringIndexOutOfBoundsException with >ArrayIndexOutOfBoundsException is surely better, it seems it is internal > implementation what cause the problem. According to the code it use >String.valueof(str), which writes: >try { > System.arraycopy(data, start, value, 0, count); >} catch (IndexOutOfBoundsException e) { > throw new StringIndexOutOfBoundsException(); >} >Is it right to StringIndexOutOfBoundsException in String.valueof()? Then >to fix this, we shall write another >try{ ... >}catch(StringIndexOutOfBoundsException){ > throw new ArrayIndexOutOfBoundsException(); >} >It is not so beautiful... I agree that throwing ArrayIndexOutOfBoundsException looks quite natural and more informative when dealing with array arguments. To have a "beautiful" fix, why don't you just write System.arraycopy(data, start, value, 0, count); without trying to catch any exception and rethrow another one? ArrayIndexOutOfBoundsException, if happened, would be thrown by System.arraycopy(). As for HARMONY-436, I agree that RI's behaviour in cases 2)-4) looks more natural than Harmony's but doubtful in cases 1) and 5). Thanks, Elena > >However according to >http://incubator.apache.org/harmony/subcomponents/classlibrary/compat.h tml >it has already draw a conclusion that: >1) throw according to spec >2) when we discover RI throw difference exception which is not internal >class, follow RI. > >What real matters is how can developers know what RI throws exactly in >all situations? Maybe a possible solution is that we fix one by one only >when we find the difference. > >> On 5/11/06, Richard Liang <[EMAIL PROTECTED]> wrote: >>> >>> George Harley wrote: >>> > Hi, >>> > >>> > I would like to start a little discussion around JIRA issue 436 [1] >>> > which deals with exception throwing compatibility between Harmony and >>> > the RI. I feel it is important to reach a concrete agreement on this >>> > as so far all of the participants in the issue seem to disagree about >>> > the interpretation of the compatibility guidelines on our web site >[2]. >>> > >>> > You can read the discussion for yourself on the JIRA page (it is only >>> > a handful of comments) but if you are pressed for time the essentials >>> > are this (IMHO - Nathan and Dmitry please feel free to fill in the >>> > gaps) : >>> > >>> > * Currently the Harmony implementation of a few public methods in >>> > StringBuffer and StringBuilder throw different runtime exceptions from >>> > the RI under certain failure scenarios. >>> > >>> > * Where the Javadoc mentions the exception type that ought to be >>> > thrown it mentions a type (j.l.IndexOutOfBoundsException) but the >>> > Harmony and RI implementations differ in that they are throwing >>> > different *sub-types* of j.l.IndexOutOfBoundsException. The RI tends >>> > to throw j.l.ArrayIndexOutOfBoundsException while Harmony tends to >>> > throw j.l.StringIndexOutOfBoundsException. >>> > >>> > * Dmitry (who raised the issue) believes that we should change the >>> > Harmony code to throw the type named in the Javadoc/specification >>> > (i.e. the supertype j.l.IndexOutOfBoundsException). >>> > >>> > * Nathan believes that the code already abides by the specification >>> > and that there is no need for any change in this area. >>> > >>> > * Little old me thinks that there *is* a problem here but that the >>> > solution is to do as the RI does and throw exceptions with the very >>> > same runtime type as the RI. That's based on my interpretation of the >>> > exception-throwing compatibility guidelines [2], in particular the >>> > fragment "Harmony class library code should throw exceptions of the >>> > same type as the RI". >>> > >>> > >>> > If I recall correctly we did agree to discuss such compatibility >>> > matters on a case-by-case basis. So, dear reader, what do you think is >>> > the correct course of action in this case ? >>> > >>> > Best regards, >>> > George >>> > >>> > >>> > [1] http://issues.apache.org/jira/browse/HARMONY-436 >>> > [2] >>> > >>> >http://incubator.apache.org/harmony/subcomponents/classlibrary/compat.h tml >>> >>> > >>> > >>> > --------------------------------------------------------------------- >>> > Terms of use : http://incubator.apache.org/harmony/mailing.html >>> > To unsubscribe, e-mail: [EMAIL PROTECTED] >>> > For additional commands, e-mail: [EMAIL PROTECTED] >>> > >>> > >>> Hello, >>> >>> Let me support Mikhail "we should throw either what RI throws or a >>> sub-class". >>> >>> -- >>> Richard Liang >>> China Software Development Lab, IBM >>> >>> >>> >>> --------------------------------------------------------------------- >>> Terms of use : http://incubator.apache.org/harmony/mailing.html >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> > > >-- > >Best Regards! > >Jimmy, Jing Lv >China Software Development Lab, IBM > >--------------------------------------------------------------------- >Terms of use : http://incubator.apache.org/harmony/mailing.html >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED]