Both of these catches in `std.range` are actually trying to validate that an Exception is thrown by the implementation. The `assert(0)` is meant to make the program crash if it doesn't. Does `assert(0)` halt in non-release, or does it throw an `Error`? In any case, catching an `Error` would be wrong: In particular, it would silently squash an actual out of bounds error in a piece of code that is quite vulnerable to it.

This should just be changed to `Catch(Exception){}`.

Or, if you want to be a little bit more involved, `assertThrown( ... )`