DConf talk : Exceptions will disappear in the future?
Jacob Carlborg
doob at me.com
Thu Jan 7 10:31:24 UTC 2021
On 2021-01-06 22:27, H. S. Teoh wrote:
> That's the whole point of Sutter's proposal: they are all unified with
> the universal Error struct. There is only one "backend": normal
> function return values, augmented as a tagged union to distinguish
> between normal return and error return. We are throwing out nonlocal
> jumps in favor of normal function return mechanisms. We are throwing
> out libunwind and all the heavy machinery it entails.
This is not what Sutter is proposing. He's proposing to add a new
"backend", so you end up with three different types of functions (when
it comes to error handling):
* Functions annotated with `throws`. This is the new "backend":
void foo() throws;
* Functions annotated with `noexcept`. This indicates a function will
not throw an exception (of the existing style):
void foo() noexcept;
* Functions without annotation. This indicates a function that may or
may not throw an exception (of the existing style):
void foo();
From the proposal, paragraph 4.1.7:
"Compatibility: Dynamic exceptions and conditional noexcept still work.
You can call a function that throws a dynamic exception from one that
throws a static exception (and vice versa); each is translated to the
other automatically by default or you can do it explicitly if you prefer."
But perhaps you're proposing something different for D?
--
/Jacob Carlborg
More information about the Digitalmars-d-learn
mailing list