Multi-catch/final rethrow
Ulf Zibis
Ulf.Zibis at gmx.de
Sat May 8 14:53:27 PDT 2010
So each type is subtype and supertype of itself ?
Thanks for clarification.
-Ulf
Am 08.05.2010 02:01, schrieb Neal Gafter:
> Ulf-
>
> to your 2nd question: Exception is both a supertype and a subtype of
> Exception. See JLS 4.10, and note the word "reflexive".
>
> Cheers,
> Neal
>
> On Fri, May 7, 2010 at 4:36 PM, Ulf Zibis <Ulf.Zibis at gmx.de
> <mailto:Ulf.Zibis at gmx.de>> wrote:
>
> Howard, Joe,
>
> hm, and what's about my 2nd question ?
>
> -Ulf
>
>
> Am 08.05.2010 01:26, schrieb joe.darcy at oracle.com
> <mailto:joe.darcy at oracle.com>:
> > If you have a question on what is today legal syntax, your friendly
> > neighborhood java compiler can help you answer that question :-)
> >
> > -Joe
> >
> > On 5/6/2010 12:45 PM, Ulf Zibis wrote:
> >> No answer for my questions? :-(
> >>
> >> -Ulf
> >>
> >>
> >> Am 04.05.2010 11:30, schrieb Ulf Zibis:
> >>> Am 04.05.2010 02:25, schrieb joe.darcy at oracle.com
> <mailto:joe.darcy at oracle.com>:
> >>>> Greetings,
> >>>>
> >>>> As alluded to as a possibility previously [1], I'm happy to
> announce
> >>>> that improved exception handling with multi-catch and final
> rethrow
> >>>> will
> >>>> be part of an upcoming JDK 7 build.
> >>>>
> >>> Great!
> >>>
> >>>> } else {
> >>>> throw (Throwable)new Exception();
> >>>>
> >>> I'm wondering that a cast to a throw is valid syntax, or _in other
> >>> words_, what should such a syntax be good for ???
> >>> In fact, an Exception instance is thrown, and should be caught
> by catch
> >>> (Exception e). Or not ?
> >>>
> >>>
> >>>> To address this, the third clause is changed to
> >>>>
> >>>>
> >>>>> - is a subtype/supertype of one of the types in the
> declaration of
> >>>>> the
> >>>>> catch parameter
> >>>>>
> >>> Does that mean, that following variation wouldn't rethrow
> >>> Exception("b3") (and (Throwable)new Exception() too?),
> >>> as it is nor subtype nor supertype of Exception, as it is itself ?
> >>> That IMO would be weird syntax.
> >>>
> >>> class Neg04 {
> >>> static class A extends Exception {}
> >>> static class B extends Exception {}
> >>>
> >>> void test(boolean b1, boolean b2, boolean b3) throws B {
> >>> try {
> >>> if (b1) {
> >>> throw new A();
> >>> } else if (b2) {
> >>> throw new B();
> >>> } else if (b3) {
> >>> throw new Exception("b3");
> >>> } else {
> >>> throw (Throwable)new Exception();
> >>> }
> >>> }
> >>> catch (A e) {}
> >>> catch (final Exception e) {
> >>> throw e;
> >>> }
> >>> catch (Throwable t) {}
> >>> }
> >>> }
> >>>
> >>>
> >>> -Ulf
> >>>
> >>>
> >>>
> >>>
> >>
> >
> >
>
>
>
More information about the coin-dev
mailing list