Collateral Exceptions, Throwable vs Exception

Andrej Mitrovic andrej.mitrovich at gmail.com
Thu Aug 19 14:36:13 PDT 2010


I think I found the problem. e contains all the collateral exceptions
(in a linked list according to TDPL), and printing out e will print
out each and every collateral exception.

So if that's the case, there's no point to using that while loop. But
if we can't print out only one exception from a linked list, then what
is the point of the .next property?

This prints out the all the collateral exceptions:

    try
    {
        fun();
    }
    catch (Throwable e)
    {
        writeln(e);
    }



On Thu, Aug 19, 2010 at 11:11 PM, Sean Kelly <sean at invisibleduck.org> wrote:
> Andrej Mitrovic Wrote:
>
>> Yes, I've added it as Throwable. But there's one more problem with
>> your code, this:
>>
>> catch (Throwable e)     // have to use Throwable for collateral exceptions
>>                             // or maybe use a cast like below
>>     {
>>         writeln("Primary exception: ", typeid(e), " ", e);
>>
>>         while ((e = e.next) !is null)
>>         {
>>             writeln("Collateral exception: ", typeid(e), " ", e);
>>         }
>>     }
>>
>> Will output ~5000 lines of "Exception .." stuff. Oh and in the book it
>> looks like you're counting from 100 to 1 (for the throws from gun),
>> which makes sense. Yet I'm getting back output from 1 to 100. Not sure
>> what's going on there..
>
> Are these stack trace lines or actual distinct exceptions?
>


More information about the Digitalmars-d mailing list