After going through some links on exception handling (1, 2, and 3), I know that C++ programs can throw pretty much anything as exceptions (int
, char*
, string
, exception
class). I know that std::exception
is the base class for standard exceptions thrown by the program. However, I'm trying to design a try
...catch
block as such:
try
{
MyFunc();
}
catch (certain exceptions)
{
// deal with the exception accordingly
}
catch (the rest of the exceptions)
{
// deal with these accordingly
}
while MyFunc()
contains the following:
void MyFunc()
{
...
if (certain condition is true) throw exception;
...
}
The trouble is that in that part of MyFunc
function, I'm not sure what type of exception I should throw. To keep the code clean by implementing my own exceptions class, I have no idea what would be a good way to implement such exceptions class.
You would derive your own class from std::exception
, so that there is some way of uniformly handling exceptions.
If this seems like overkill, you can throw std::logic_error
or one of the other standard exception types intended for applications to use.
You could also use these as base classes for your own more specific exceptions: this saves a little work because they take care of implementing the what
method for you.
Note that deep exception hierarchies can be unusable, because you're basically making a guess in advance about how to categorize the errors, and your clients may disagree.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With