Forget "error information" and "errors", embrace
Structured Exception Handling. Forget collecting and organizing of such information, forget defensive programming in general, forget handling each and every exception case, let go. That all have gone to history.
It's hard to explain the concept in a one quick answer. Structured exception handling is the greatest invention; I value it more than whole OOP. Please see:
http://en.wikipedia.org/wiki/Structured_exception_handling[
^],
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657%28v=vs.85%29.aspx[
^],
http://msdn.microsoft.com/en-us/library/ms173160.aspx[
^].
I provided a short explanation of the essence of things in my past answer:
Does Exception in C# Constructor Cause Caller Assignment to Fail?[
^].
Exception handling mechanism is a time machine.
—SA