What is throwable
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Mar 19 09:39:52 PDT 2009
Ary Borenszweig wrote:
> 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?
For allowing destructors to throw.
Andrei
More information about the Digitalmars-d
mailing list