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