Exception/Error division in D

deadalnix deadalnix at gmail.com
Wed May 30 07:13:24 PDT 2012


Le 30/05/2012 11:32, Don Clugston a écrit :
> 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.

For segfault, it has been proven to be useful in other languages.


More information about the Digitalmars-d mailing list