nothrow by default
newshound2 at digitalmars.com
Fri Jan 10 01:40:00 UTC 2020
On 1/9/2020 12:39 PM, H. S. Teoh wrote:
> It's not really the exceptions themselves
> that people object to, but the associated implementation issues.
Yes. They're very costly, even in code that never throws.
An approach I've been using with modest success is to design errors entirely out
of the code. For example, in dmd a lot of errors are handled by making a special
AST node for "Error". Subsequent code does nothing with Error nodes.
(Analogously to how floating point code deals with errors, it just sets a NaN
value, which is sticky.)
Another technique is to check for errors in the data first, then the processing
code does not have to check, and cannot fail.
I enjoy trying to set up an API so it cannot fail, then no special code is
needed for errors. Of course, this isn't always possible, and isn't a general
solution. But it's nice when one can make it work.
P.S. I hate throwing constructors, and would force them to be nothrow in D if I
weren't faced with a tsunami of objection to it :-)
More information about the Digitalmars-d