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