handle: A Range that handles an Exception

When a Exception occurs inside a range chaining the whole chain dies usually. The Handle range fixes that, as it catches a defined exception and calls an user defined handler on it.
the false, true part is a bit messy. Actually, empty.init should be true and getFront should set it to false if it found anything not throwing. and popFront should reset it.

this.frontElement = this.input.front may throw and this.input.popFront() may also throw, maybe even for the same InputRange. And if .front throws you have to advance. And if you advance, that may also throw.

As the current design requires frontElement to be filled at construction you may just have to iterate all elements, if they all throw and at the end the range is empty.

Long story short: You need both functions or popFront will be a nested mess of try catches.