On 12 January 2011 09:10, Don Clugston <[email protected]> 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 <[email protected]> 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 >> [email protected] >> http://lists.puremagic.com/mailman/listinfo/phobos >> > _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
