[phobos] Exception chaining

Don Clugston dclugston at googlemail.com
Wed Jan 12 00:55:26 PST 2011


On 12 January 2011 09:10, Don Clugston <dclugston at googlemail.com> wrote:
> How about this rule:
> ---
> If all collateral exceptions are derived from Exception, the 'boss' or
> Master Exception is the first exception thrown.
> Otherwise, the first Error (or Throwable non-Exception) is the boss.
> The exception, including all collateral exceptions, will be caught by
> the first handler who can catch the boss.
> ---
>
> Two issues:
> * If the boss is a collateral exception, we still need a way to find
> out what the first exception was. Maybe need to add a 'first' (or
> 'prev') member to Throwable?

Or, the chain could simply be:
boss -> exception1 -> exception2 -> BypassThrowable -> exception3.

Where BypassThrowable is a class which acts as a placeholder for the boss.

This would be the simplest interim solution, since it doesn't require
any code changes elsewhere, and would allow the
existing error messages to continue to work correctly.


> * It is still possible to throw an Object which isn't derived from
> Throwable. Can we disallow this?
> (We could throw a "NoThrowableError" if such an object is found to
> have been thrown (can happen via casting)). This would remove some
> really nasty corner cases.
>
>
> On 12 January 2011 01:10, Andrei Alexandrescu <andrei at erdani.com> wrote:
>> On 1/11/11 4:03 PM, Jonathan M Davis wrote:
>>>
>>> On Tuesday, January 11, 2011 15:50:52 Andrei Alexandrescu wrote:
>>>>
>>>> I don't think that's helpful. It complicates the flow a lot because now
>>>> understanding how the program acts depends not on the types anymore, but
>>>> on what happens dynamically. Makes it more difficult, not easier, to
>>>> write robust code.
>>>>
>>>> If I throw a FileException, I must catch a FileException with
>>>> catch(FileException) regardless of what collateral exceptions have
>>>> happened.
>>>
>>> I agree as long as it's other Exceptions that have been thrown. But
>>> Errors?
>>> Aren't they typically supposed to kill your program?
>>>
>>> - Jonathan M Davis
>>
>> I agree that non-Exception Throwables are an out-of-band method of
>> communication that deserves special attention.
>>
>> Don, would it be difficult to make a non-Exception Throwable thrown during
>> unwinding essentially come to the top of the foodchain and save everything
>> in its tail?
>>
>>
>> Andrei
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
>>
>


More information about the phobos mailing list