Exception transparency
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Jun 8 05:13:48 PDT 2010
On 08/06/10 12:54, Peter Levart wrote:
> On 06/08/10, Maurizio Cimadamore wrote:
>
>>>> needs to guess any intentions where it will affect realistic code.
>>>>
>>>>
>>>>
>>> Neal,
>>> I have trouble to figure out an example of such rare places.
>>>
>>> Do you have an example of such code ?
>>>
>>>
>> Could be this?
>>
>> class A<X> extends Exception {}
>> class B extends A<String> {}
>> class C extends A<Integer> {}
>>
>> <throws E> E choose(E e1, E e2) { ... }
>>
>> choose(new B(), new C()); //what is the inferred type for E???
>>
>> In JDK 5/6 E is inferred to be A<? extends Object& Comparable<? extends
>> Object& Comparable<?>>>. In JDK 7 with the proposed new semantics for
>> 'exception-bound' type-vars the inferred type would be something like
>> A<String> | A<Integer>, which, I guess, would need to be rejected as an
>> ill-formed type on the grounds of type-disjointness (A<String> and
>> A<Integer> are not provably distinct).
>>
> Are you suggesting to relax the rule that generic classes can not extend Throwable?
>
Good catch - my example is illegal; no incompatibility here.
Maurizio
> Peter
>
>
>> Maurizio
>>
>>
More information about the lambda-dev
mailing list