An Exception-Based Assertion Mechanism for C++