I found the hard way that assert() in C/C++ exists hard. This post explains that you get a SIGABRT . So, if you want your code to be testable, you better throw an exception instead.
I defined a
LOGIC_ERROR(condition)
macro:
#define LOGIC_ERROR(e) if(!(e)) throw std::logic_error(#e)
So, in a code like this:
int function() {
LOGIC_ERROR(1 > 2);
}
You'll get an exception with the message "1 > 2". Useful. You can use this sort of behaviour in e.g. unit tests (bonus: exceptions are good for you!)
Member discussion: