OK. I have to admit that this book was a very close second to my Book of the month:
by Brad Abrams.
I really like this quote from Brad about the book:
I tried to maintain a very minium level of editorial discretion on the annotations. My goal was to get folks that were heavily involved in the design of the BCL to comment candidly from their point of view. There are no annotations that are wrong technically, but that does not mean they are all the Microsoft official position
Brad is also sharing stuff from the book on his blog. Very interesting.
I'd say this book is a must if you want to deeply understand some of the reasons and logic (and sometimes mistakes) that went into creating the base class library of the .Net framework. I'm one of those who believes the deeper you are aware of what's underneath, the better you can deal with problems and understand why things happen, and thus deal with them more easily.
Now about ApplicationException
Actually, the first post Brad made about the book brought up a discussion about using the ApplicationException class in your application. In short, Don't. Yep. It came as a surprise to me as well. All the MS examples out there use this and I've read in lots of places that this class should be used as your base exception class. But now comes Brad and turns the tables. The comments on that post are very interesting. Personally, I still don't understand how this discrepancy came to be. Anyone know?