I am working on a small c++ program and learning exceptions. Is the following code “bad”, and if so, what can I do to improve it?
try {
// code
if (some error) {
throw "Description of error.";
}
}
catch (char* errorMessage) {
cerr << errorMessage << endl << "Fatal error";
}
Is there anything wrong with throwing a char array as an exception?
EDIT:
Would this be a better way to go?
const char errorMessage[] = "Description of error";
try {
// code
if (some error) {
throw errorMessage;
}
}
catch (char* errorMessage) {
cerr << errorMessage << endl << "Fatal error";
}
It is much better to throw a standard exception object. In general, the best practice is to throw something derived from
std::exceptionso that if in some situation it does cause your program to terminate, the implementation has a better chance of printing a useful diagnostic.Because it isn’t hard to do this, I would never recommend throwing a raw string literal.