How the heck is onInvalidMemoryOperationError() nothrow?

Jeremy DeHaan via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri May 6 08:07:42 PDT 2016


On Friday, 6 May 2016 at 03:24:23 UTC, tsbockman wrote:
> On Friday, 6 May 2016 at 02:57:59 UTC, Jeremy DeHaan wrote:
>> [...]
>
> From the spec 
> (https://dlang.org/spec/function.html#nothrow-functions):
>     "Nothrow functions can only throw exceptions derived from 
> class Error."
>
> Throwing an Error is, for many purposes, considered 
> fundamentally different than throwing an Exception because 
> Error objects aren't meant to be caught by user code. Throwing 
> an Error is supposed to just be a way of crashing the program 
> with a nice message and stack trace.
>
> A key benefit of this distinction, is that it enables the use 
> of `assert()` statements in `nothrow` code.

Oh, interesting. That makes sense, thanks.


More information about the Digitalmars-d-learn mailing list