Exception/Error division in D

Don Clugston dac at nospam.com
Wed May 30 02:32:00 PDT 2012


On 30/05/12 10:40, Jonathan M Davis wrote:
> On Wednesday, May 30, 2012 10:26:36 deadalnix wrote:
>> The fact that error don't trigger scope and everything is nonsensial.
>
> If an Error is truly unrecoverable (as they're generally supposed to be), then
> what does it matter? Something fatal occured in your program, so it
> terminates. Because it's an Error, you can get a stack trace and report
> something before the program actually terminates, but continuing execution
> after an Error is considered to be truly _bad_ idea, so in general, why does
> it matter whether scope statements, finally blocks, or destructors get
> executed? It's only rarer cases where you're trying to do something like
> create a unit test framework on top of assert that you would need to catch an
> Error, and that's questionable enough as it is. In normal program execution,
> an error is fatal, so cleanup is irrelevant and even potentially dangerous,
> because your program is already in an invalid state.

That's true for things like segfaults, but in the case of an 
AssertError, there's no reason to believe that cleanup would cause any 
damage.
In fact, generally, the point of an AssertError is to prevent the 
program from entering an invalid state.
And it's very valuable to log it properly.


More information about the Digitalmars-d mailing list