I have been thru a few questions but did not find an answer.

I wonder how should the exception handling be implemented in a C++ software so it is centralized and it is tracking the software progress?

For example, I want to process exceptions at four stages of the program and know that exception happened at that specific stage:  

1. Initialization  

2. Script processing  

3. Computation  

4. Wrap-up.

At this point, I tried this:

```
int main (...)
{
...
// start logging system
try {
    ...
    }
catch (exception &e)
  {
        cerr << "Error: " << e.what() << endl;
        cerr << "Could not start the logging system. Application terminated!\n";
        return -1;
  }
catch(...)
    {
        cerr << "Unknown error occured.\n";
        cerr << "Could not start the logging system. Application terminated!\n";
        return -2;
    }

// open script file and acquire data
try {
...
    }
catch (exception &e)
  {
        cerr << "Error: " << e.what() << endl;
        cerr << "Could not acquire input parameters. Application terminated!\n";
        return -1;
  }
catch(...)
    {
        cerr << "Unknown error occured.\n";
        cerr << "Could not acquire input parameters. Application terminated!\n";
        return -2;
    }
// computation
try {
...
}
...

```

This is definitely not centralized and seems stupid.
Or maybe it is not a good concept at all?