Checked vs unchecked exceptions

Moritz Maxeiner via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 26 18:17:24 PDT 2017


On Tuesday, 27 June 2017 at 00:29:53 UTC, crimaniak wrote:
> On Monday, 26 June 2017 at 19:31:53 UTC, Moritz Maxeiner wrote:
>>
>> And the good *way* to achieve this result would be the 
>> following:
>> - When visiting `startFoo`, the compiler automatically 
>> aggregates all different exceptions it may throw and stores 
>> the resulting set
>> - If `startFoo` is going to be part of a (binary) library and 
>> its symbol is exported, also export its exception set
>> - Improve the compiler's nothrow analysis such that if 
>> startFoo is called in scope S, but all of the exceptions in 
>> its exception set are caught (i.e. can't break out of scope 
>> S), it is treated as nothrow in S.
>> - Enclose the call to `startFoo` in B in a nothrow scope.
>  After preparing my message I read tail of the thread and see 
> your vision very close to mine. 👍

I wouldn't call it a vision, since I personally don't need it.
It's just that I consider checked exceptions as an excuse for not 
improving a deficient compiler.

>
>>> So listing exceptions that can be thrown is a good thing 
>>> because it helps you write more reliable code.
>>
>> It is a bad thing because you force a human to do a machine's 
>> job.
> This is a bad necessity, but a necessary opportunity. Sometimes 
> you need to be sure that the compiler's vision matches yours.

I would need a concrete example that's not either solved by the 
steps mentioned in my post, or using compile time introspection 
on a function's exception set (as shown in John's idiomatic 
proposal [1]).

[1] 
http://forum.dlang.org/post/lxejskhonjtiifvvgwnd@forum.dlang.org


More information about the Digitalmars-d mailing list