Don’t Use Assert() If You Don’t Mean It (C++)
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
1 |
LOGIC_ERROR(condition) |
macro:
1 |
#define LOGIC_ERROR(e) if(!(e)) throw std::logic_error(#e) |
So, in a code like this:
1 2 3 |
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!)
A little experiment: If you find this post and ad below useful, please check the ad out :-)