The Right Approach to Exceptions

foobar foo at bar.com
Mon Feb 20 01:01:17 PST 2012


On Monday, 20 February 2012 at 07:10:39 UTC, Andrei Alexandrescu 
wrote:
> On 2/20/12 12:44 AM, foobar wrote:
>> I just died a little reading this. Are you suggesting that in 
>> order
>> to handle IO exceptions I need to: try { ...whatever... } catch
>> (PackageException!"std.io") {...} } catch
>> (PackageException!"tango.io") {...} } catch
>> (PackageException!"otherLib.io") {...} ...
>>
>> What the hell is wrong with just using an IOException?
>
> There's nothing wrong, but there's a possible misunderstanding. 
> If
> tango.io and otherLib.io cooperate with std, then they'd 
> originate
> exceptions in std.io (as opposed to their own). Do note that 
> the issue
> is exactly the same if libraries use IOException - they all 
> must agree
> on using the same nomenclature, whether it's called
> PackageException!"std.io" or IOException.
>

The above is patently wrong.
Are you suggesting that tango.io and otherLib.io need to depend 
on Phobos IO?? If so, that removes the benefits of using 3rd 
party libraries. If that's not your intention (and I really hope 
it isn't!) than IOException must be defined in a *separate* 
module that tango can depend on.

> ModuleException and PackageException have one important thing 
> going for
> them: they automate away a good amount of boilerplate, which 
> makes them
> interesting for me to look at, and worth sharing as long as 
> we're
> brainstorming. The associated issues as clear as the advantages.
> Probably ModuleException is too specific to be interesting, but
> PackageException seems useful.
>

Per above, your suggestion actually *adds* boilerplate since you 
now want me to use PackageException!"std.io" instead of just 
IOException.

>> AS Nick wrote, it seems you have a complete lack of 
>> understanding of
>> how exceptions work which is unsurprising coming from a c++ 
>> expert.
>
> Always eager to learn (so please come with all you've got), but 
> quite
> honest I hope in a way you're exaggerating, seeing as a lot of 
> the stuff
> I authored for D (the scope statement, exception chaining, a 
> full
> chapter in TDPL) would be completely broken.
>

"even a broken clock shows the right time twice a day"

>> Also, this entire discussion you started about "improving" 
>> exceptions
>> looks to me like a combination of NIH syndrome sparkled with 
>> heavy
>> doses of premature optimization.
>
> What is being optimized here?
>
>
> Thanks,
>
> Andrei

It's clear that you are trying to generify exceptions. This 
contradicts the very notion of what exceptions are. You also seem 
to try to optimize the amount of exception classes. Making user 
code convoluted for the sake of some premature optimization which 
most likely has negligible affect is completely unacceptable. I 
get that you are a templates master, that does *NOT* mean 
everything must be made generic.
You seem to prove the old saying that when all you have is a 
hammer everything looks like a nail.

[Meta] side-note:
It's extremely irritating when you demand utmost pedantic 
reasoning from others while you often answer without providing 
such pedantic reasoning yourself or worse answer with a single 
word posts. That shows a complete lack of respect for others. You 
seem to be of high regard for yourself which is not justified at 
all given this attitude.


More information about the Digitalmars-d mailing list