On Friday, 20 January 2017 at 02:11:41 UTC, Adam D. Ruppe wrote:
On Friday, 20 January 2017 at 01:24:18 UTC, Jon Degenhardt
wrote:
Is there a place in the docs that describe the difference
between errors and exceptions? As to the particular example,
why is it unsafe to recover from attempting to access memory
past the end of the array, as long as the access was prevented?
It is just that Errors are not necessarily *thrown*. The
implementation is allowed to immediately abort on them too -
your catch has no guarantee to actually run, whereas with
Exceptions, they are.
Thanks, that's helpful. I hadn't seen it before, but the
documentation for Object.Error and Object.Exception is clear on
the distinction (https://dlang.org/phobos/object.html#.Error).
There the intent is clear that Object.Error is for "unrecoverable
runtime errors", and "not safe to catch and handle".
An aside - The documentation I had read, in the Error Handling
chapter of the Language Reference,
https://dlang.org/spec/errors.html, is less crisp about this
distinction than the documentation for Object.Error. Perhaps an
opportunity to improve this part of the documentation.
--Jon