Alternatives to exceptions for error handling

Paul Backus snarwin at
Sun Nov 22 18:21:44 UTC 2020

On Sunday, 22 November 2020 at 17:37:18 UTC, Roman Kashitsyn 
> So my question is: does/will D provide support for alternative 
> approaches to error handling?  In practice, this typically 
> includes 2 things:
> 1. A sum type that contains either a result or an error. Like 
> Result in Rust or Expected that Andrei proposed for C++.  It's 
> easy to implement in D, but having this in Phobos would be nice.

The biggest blocker for this is that D currently has no 
equivalent of Rust's `#[must_use]` and C++'s `[[nodiscard]]`. I 
have a DIP in the works to address this:

> 2. Some kind of syntactic sugar for propagating errors upstream 
> (? macro in Rust, check/handle proposal in Go 
>, an ugly macro in C++, etc.).

So far the only proposal I've heard on this front is the idea of 
bringing Herb Sutter's deterministic exceptions [1] to D. But 
there are no concrete plans at this point, not even a DIP.

My expectation is that, like in Rust, the first thing to arrive 
will be monadic `map`/`flatMap` methods, since those can be 
implemented using only library code.


More information about the Digitalmars-d mailing list