Exceptions in C# provide a structured, uniform, and type-safe way of handling both system-level and application-level error conditions. The exception mechanism in C# is quite similar to that of C++, with a few important differences.
The guidance on system-level and application-level exceptions used to be that all application exceptions should be derived from
Application-Exception. This turned out to be a bad idea, and we no longer recommend this approach: Whether an exception comes from an application or the framework class library is almost always irrelevant.
• In C#, all exceptions must be represented by an instance of a class type derived from
System.Exception. In C++, any value of any type can be used to represent ...