Isolating the source of an error in a method containing many nested method calls can be difficult. If you haven’t written comprehensive error-handling code in every method and property you write, or if you propagate errors up the call chain, an error handler in a high-level method won’t be able to identify whether a trapped error occurred in the high level method itself, or whether it’s the result of an unhandled error encourtered further down the call chain.
Tracking execution context can be a relatively painless strategy to isolate the source of an error. Do this by declaring a global object that implements a call stack used by each method in your project. I call this object an ErrorContext object. You use the object by pushing the context