What is throwable

Ary Borenszweig ary at esperanto.org.ar
Thu Mar 19 08:35:01 PDT 2009


Andrei Alexandrescu wrote:
> Steve Teale wrote:
>> Daniel Keep Wrote:
>>
>>>
>>> Steve Teale wrote:
>>>> Daniel Keep Wrote:
>>>>
>>>>> Steve Teale wrote:
>>>>>> ...
>>>>>>
>>>>>> What is the point of class Throwable if you can throw any old 
>>>>>> class object?
>>>>> What class Throwable?
>>>> dmd\src\druntime\src\compiler\dmd\object_.d
>>>>
>>>>>   -- Daniel
>>> Ah.
>>>
>>> Well, if I had to guess, I'd say it was because Throwable objects are
>>> more useful than random objects of other types.  Object doesn't give you
>>> msg, file, line, info or next.
>>>
>>>   -- Daniel
>>
>> But doesn't it rather imply that if you want to be able to throw a 
>> class, then it should be derived from Throwable?
> 
> Yes, a check should be added to that effect. Later on we need to 
> actually exploit that only certain types can be thrown in implementing 
> exception chaining.
> 
> What is exception chaining? Consider:
> 
> void weird()
> {
>     scope(failure) throw new Exception1("hum");
>     throw new Exception2("ho");
> }
> 
> The C++ model terminates the app when an exception is thrown while the 
> stack is unwound. Java (I was told without having checked) makes the 
> latest exception thrown the "main" exception, and you get to also access 
> the other exceptions by using primitives in class Exception. Is that true?

You can't throw multiple exceptions in Java. What you can do is:

try {
   ...
} catch(SomeException e) {
   throw new AnotherException(e);
}

and then AnotherException is thrown with "e" being it's inner exception, 
and you can check that.

> 
> Anyhow, we should implement a model in D that allows such multiple 
> throws.

What for?



More information about the Digitalmars-d mailing list