Multi-catch/final rethrow

Ulf Zibis Ulf.Zibis at gmx.de
Fri May 7 16:36:17 PDT 2010


Howard, Joe,

hm, and what's about my 2nd question ?

-Ulf


Am 08.05.2010 01:26, schrieb 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:
>>>> 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