For example:
void Date::month(unsigned int inMonth) {
assert(inMonth <= 12);
_month = inMonth;
}
If this is not good practice, what is the correct way to go about this?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You shouldn’t use assert to ensure that an argument to a public member function is valid. The reason is that there’s no way for clients of your class to react to a failed assertion in any meaningful way (the fact that asserts are removed from release builds does not help either).
As a rule of thumb, assert should only be used for things that are strictly under your control (e.g., an argument of a private method).
In this case you’re better off throwing a std::invalid_argument exception: