Exception transparency - lone throws (no checked exceptions)

Paul Benedict pbenedict at apache.org
Thu Jun 17 18:33:53 PDT 2010


I erred last time I spoke. I don't want to change the semantics of the
the thrower; only the receiver. If you call a method that declares a
checked exception (in its signature), it/they must be caught or its a
compiler error. If you calls a method that declares no checked
exceptions, but for some reason manages to throw one anyway, the
catch() clause would become valid in JDK 7 -- just unprovable.

On Thu, Jun 17, 2010 at 7:09 PM, Rémi Forax <forax at univ-mlv.fr> wrote:
> Paul,
> this also means that you allow any method that throws a checked exception
> to be called in the closure body without requiring a catch or a throws.
>
> Rémi
>
> Le 18/06/2010 01:37, Paul Benedict a écrit :
>>
>> Remi, I am not proposing eliminating checked exceptions. My suggestion
>> is to allow the catching of checked exceptions without the compiler
>> having to prove that it is going to be thrown.
>>
>> Example:
>> try {
>> // do nothing - nothing causes IOException here
>> } catch (IOException e) { }
>>
>> That doesn't compile today. If we allowed it to compile, then checked
>> exceptions could be thrown out of closures without having to be
>> declared.
>>
>> Paul
>>
>> On Thu, Jun 17, 2010 at 5:58 PM, Rémi Forax<forax at univ-mlv.fr>  wrote:
>>
>>>
>>> Le 18/06/2010 00:47, Stephen Colebourne a écrit :
>>>
>>>>
>>>> On 17 June 2010 22:52, Paul Benedict<pbenedict at apache.org>    wrote:
>>>>
>>>>
>>>>>
>>>>> My only comment is on the the "catch throws" clause.
>>>>>
>>>>>
>>>>
>>>> ...
>>>>
>>>>
>>>>>
>>>>> Why doesn't Java relax its exception catching rules so that it's legal
>>>>> to catch undeclared checked exceptions? So the compiler cannot
>>>>> definitively prove the exception will be thrown, so what? It should be
>>>>> backwards compatible since it is illegal today, and it takes away this
>>>>> "catch throws" clause that is a bit hackish -- albeit necessary.
>>>>>
>>>>>
>>>>
>>>> This is perfectly possible and not backwards incompatible as far as I
>>>> can see (it simply makes code that wouldn't compile today start to
>>>> compile.)
>>>>
>>>>
>>>
>>> It's possible but stupid.
>>> My students must be able to write webservers and without checked
>>> exceptions,
>>> it's hard to be done right. No one want a server that stop if a client
>>> shutdown the connection randomly.
>>>
>>> Checked exception is a good way to say You must do something here to deal
>>> with this uncommon case.
>>>
>>>
>>>>
>>>> I would note that the catch side of checked exceptions is just as
>>>> important as the throws side to those that favour checked. Thats why I
>>>> chose the slightly less aggressive change with an additional keyword.
>>>> Were this proposal to be seriously considered, I'd expect that this
>>>> option would be very much on the table.
>>>>
>>>> Stephen
>>>>
>>>>
>>>
>>> Rémi
>>>
>>>
>>>
>>>
>
>


More information about the lambda-dev mailing list