On Monday, 12 January 2015 at 17:22:27 UTC, Adam D. Ruppe wrote:
On Monday, 12 January 2015 at 13:54:18 UTC, Ola Fosheim Grøstad
wrote:
What makes you say that?
try/throw/catch is like 50x slower than doing nothing except
returning a value, but D's exceptions still tend to outperform
Java and C#; it isn't awful.
I still wouldn't use them for ordinary flow as a general rule
though, but I think they work well for cases where you ask a
function to do something and it just can't.
Doesn't D still use the standard zero-cost EH that was created
for Itanium, where you take the performance hit on unwinding?
I don't know, I'm just thinking about the bemchmarks.
Right, I kinda think that C++ EH is awful outside the context of
big iron. It is often avoided.
I think a clean language should find one single way to deal with
errors, so having one mechanism that performs well would make for
clean programming.
I've suggested many alternatives before, at least 4. And D could
do anything the hardware supports. Including having multiple
return paths, efficient longjump, implicit errorcode propagation,
offsetbased unwinding...
Error handling and GC are perhaps the two issues that are the
major weak spots for D. I think the language could be changed
somewhat and do both reasonably well (as well as one can with
stop-the-world-GC).