Exception vs. Error
Lionello Lunesu
lio at lunesu.remove.com
Mon Mar 26 23:38:51 PDT 2007
Sean Kelly wrote:
> Lionello Lunesu wrote:
>> What's the difference between an Exception and an Error?
>>
>> I know that Exceptions are meant to be recoverable and Errors are
>> non-recoverable, but this doesn't help me since
>> (1) Error is derived from Exception (so any catch(Exception) can
>> _recover_ from an Error), and
>> (2) there are also many catch(Error) which seems that an Error is not
>> quite that bad.
>
> Personally, I don't see any point in having the Error class, for the
> reasons mentioned above. The only useful thing about Error is that it
> contains file and line info, and errors can be chained. In Tango, these
> features have been added to Exception and Error has been dropped.
>
>> Take Phobos for example. Why are some problems throwing an Error and
>> others an Exception?
>
> Your guess is as good as mine.
>
>> In either case, it seems like the Error class should not derive from
>> the Exception class, since catching one should not consume the other.
>
> Right. And then there's the issue of what is actually recoverable.
> Personally, I think this varies based on the type of application being
> written. As a result, I don't think the language should dictate that
> some errors are recoverable and other ones are not. Rather, the
> exception hierarchy should be designed so that errors which are
> typically not recoverable can not be easily ignored, and the rest is up
> to the user. I tried this in Tango by making all such errors direct
> descendants of Exception (because everything thrown in D is supposed to
> derive from Exception) and suggesting rather strongly that "catch
> Exception" is generally an error and should never be done by the average
> user.
This makes a lot of sense :) Thanks, Sean, for your take on this.
L.
More information about the Digitalmars-d-learn
mailing list