How to use exceptions

H. S. Teoh hsteoh at
Fri Aug 12 00:40:48 UTC 2022

On Fri, Aug 12, 2022 at 12:12:13AM +0000, Adam D Ruppe via Digitalmars-d-learn wrote:
> On Thursday, 11 August 2022 at 23:50:58 UTC, H. S. Teoh wrote:
> > I think the OP's idea is somewhat different: adding contextual
> > information to a propagating exception that the throwing code may
> > not have access to.
> Yeah, but you can use the mechanism again: you'd catch the one then
> throw a new one with the old one tacked on the back.

True.  But having to insert try/catch syntax wrapping around every
potential abstraction level that might want to add contextual
information is a pain.  If we could use a wrapper that can be inserted
at strategic entry points, that'd be much better.

> > The OP's idea of wrapping throwing code with a function that tacks
> > on extra information is a good idea.
> Yeah, that is good. I also kinda wish that scope(failure) could do it
> so you could tack on info with a more convenient syntax... i have some
> more wild ideas brewing now lol

Hmm! That gets me thinking.  Maybe something like this?

	// Totally fantastical, hypothetical syntax :P
	auto myFunc(Args...)(Args args) {
		int additionalInfo = 123;
		scope(failure, additionalInfo);

		return runUnreliableOperation(args);


"No, John.  I want formats that are actually useful, rather than over-featured megaliths that address all questions by piling on ridiculous internal links in forms which are hideously over-complex." -- Simon St. Laurent on xml-dev

More information about the Digitalmars-d-learn mailing list