On Sunday, 4 July 2021 at 10:07:08 UTC, jfondren wrote:
By that, what you're running into is an unpleasant interaction between
1. scope(exit)s that you're writing
2. Errors being thrown rather than Exceptions
3. anonymous functions getting inferred as nothrow

And a resolution could be to submit an issue to make #1 prevent #3: if someone wants nothrow on an anonoymous function with scope guards, they have to make it explicit.


Although taking the example code and giving the anonymous function a name does not actually change this behavior. It really has to potentially throw a non-Error exception, like

```d
if (ptr is null) throw new Exception("null");
```

There are options like "add a debugging flag to not treat Errors differently"... but you know, you're going to have gaps in what you can reasonably test anyway, like code that calls libc exit(), or code that SIGKILLs itself, or code that enters an infinite loop. You could document some issues with catching non-catchable exceptions.

Reply via email to