In many cases, you can use existing exception classes from the .NET Framework Class Library to indicate exceptions that occur in your programs. However, in some cases, you might wish to create new exception classes specific to the problems that occur in your programs. User-defined exception classes should derive directly or indirectly from class ApplicationException of namespace System.
Good Programming Practice 12.1
Associating each type of malfunction with an appropriately named exception class improves program clarity.
Software Engineering Observation 12.3
Before creating a user-defined exception class, ...