Try blocks are trying

jfondren julian.fondren at gmail.com
Sun Oct 10 16:31:55 UTC 2021


On Sunday, 10 October 2021 at 16:12:31 UTC, Carl Sturtivant wrote:
> Design error?

A block not introducing a scope is weird, and my first reaction 
to the {{ }} workaround was disgust. That's with version and 
static foreach blocks where not introducing a scope has very 
clear benefits. Try/catch meanwhile is a familiar construct and 
people are already used to working around issues like this.

```d
typeof(frgl()) x;
try {
     x = frgl;
} catch (Exception e) { }
```

I'd consider also if you can use std.exception.ifThrown or a 
scope statement instead:

```d
auto x = frgl().ifThrown(typeof(frgl()).init);
```


More information about the Digitalmars-d mailing list