Using assertions and exceptions
D has two features dedicated to error handling: exceptions and assertions. Exceptions are used to handle errors external to the program and assertions are used to verify assumptions inside the program. In other words, assertions are a debugging tool while exceptions handle situations that are beyond your control as a programmer.
How to do it…
Perform the following steps by using assertions and exceptions:
Any time you make an assumption about program state, explicitly express it with
assert
.Whenever environmental or user data prevents your function from doing its job, throw an exception.
Write
assert(0);
on any branch that you believe ought to be unreachable code.
The code is as follows:
struct MyRange { int current = 0; @property bool empty() { return current < 10; } @property int front() { // it is a programming error to call front on an emptyrange // we assume current is valid, so we'll verify withassert. assert(!empty); return current...