On Saturday, 3 July 2021 at 20:46:00 UTC, Steven Schveighoffer
wrote:
On 7/3/21 4:08 PM, frame wrote:
On Saturday, 3 July 2021 at 17:39:18 UTC, Steven Schveighoffer
wrote:
But in practice, the compiler does not have to clean up
anything when an `Error` is thrown. Whether it does or not is
defined by the implementation.
This should be really mentionend in the docs? "Guard", yeah...
Yeah, there isn't a good discussion of the differences between
Error and Exception on that page.
-Steve
On [The D Error Handling
Solution](https://dlang.org/spec/errors.html#the_d_error_handling_solution), says :
If code detects an error like "out of memory," then an Error is
thrown with a message
saying "Out of memory". The function call stack is unwound,
looking for a handler for
the Error. Finally blocks are executed as the stack is unwound.
If an error handler is
found, execution resumes there. If not, the default Error
handler is run, which displays
the message and terminates the program.
scope(exit) it's syntactic sugar for a classic `try {} finally
{}` . The documentation says that must be executed.