On Sat, 04 Oct 2014 03:01:14 +0000 deadalnix via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
> True for return, but throw is a stupid limitation( as it do not > prevent the scope to throw at all, simply forc to hide it, which > is only worse). scope(exit) { some-cleanup-code thisCanThrow(); some-more-cleanup-code } and what we should do with "some-more-cleanup-code" if "thisCanThrow" throws? it's breaks the promise that all cleanup code was executed prior to exiting. if i'm writing `collectException(thisCanThrow());`, i'm making my intents clear: "ok, i know that it can throw and i'm fully responsible to ignoring that here". yet silently allowing functions that throws in this context is disasterous, as it nullifies the promise on cleanup code. then i have to write such abominations: scope(exit) { some-cleanup-code scope(exit) some-more-cleanup-code; thisCanThrow(); } WUT?! this is hard to read and unnecessary complicated.
signature.asc
Description: PGP signature